为什么 8362.97*100.00=836296.9999999999 ? 8362.98*100却等于836298.0如题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class test{ public static void main(String []args) { double i=8362.98*100; System.out.println(i); }}我试了,显示836298.0 是正常的啊! float和double主要是用于科学计算。可以看看浮点数在内存里的存储、计算方法。如果在计算金额,使用BigDecimal。或者int/long并自己处理小数点问题。 计算机里表示小数本来就是不准确的!!!!!!计算机用的是二进制,小数是十进制...楼主自己google一下 浮点数在计算机里是怎么表示的,就会清楚.. 计算机里表示小数本来就是不准确的;特别是尾数比较多时DOUBLE在所有情况下都有一个精确范围 double型用于科学计算 改为BigDecimal 如果楼主想用的是money表示,可以用int整型来存储,重写toString() 让它的输出为value/100,单独写个类,这样就不会有小数的问题了 java swing 中容器大小的问题 SSLSocket如何在握手前发送不加密的数据包 如何向其他程序的文本区域输出字符? 关于字符串替换 ResultSet能做为Session传输吗? JAVA服务端客户端直接传对象问题 jfreechart中曲线图显示问题 问个CVS无法提交的问题 请指教:servlet,jsp和多线程的关系,100分相送喔!! 传递引用的问题 请问谁知道有什么分析JAVA代码的工具? 28了,想从系统管理往java方面转.
{
public static void main(String []args)
{
double i=8362.98*100;
System.out.println(i);
}
}
我试了,显示836298.0 是正常的啊!
如果在计算金额,使用BigDecimal。或者int/long并自己处理小数点问题。
计算机用的是二进制,小数是十进制...楼主自己google一下 浮点数在计算机里是怎么表示的,就会清楚..
特别是尾数比较多时
DOUBLE在所有情况下都有一个精确范围