请问怎样解决在java中比如9除12得出0.074999999999999这样的结果,是不是java的bug? 这个结果是正确的。float本来就是需要你来确定精度的。想想我们是怎么来比较两个float相等的,不就是确定一个delta比如0.00001,如果落在这个范围内就认为相等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用c也一样...系统的事...float就是这样 .这是硬件的问题 ... 是cup的问题 javascript也有这样的问题,那为什么好象asp、或vbscript没有这个问题呢? 这是数据类型的问题你用BigDecimal就不会有问题了《Effective Java》上写的 用BigDecimal也一样的问题,好怪呀? //这个程序是Effective Java上提供的public static void main(String[] args) { final BigDecimal TEN_CENTS = new BigDecimal(".10"); int itemsBought = 0; BigDecimal funds = new BigDecimal("1.00"); for (BigDecimal price = TEN_CENTS; funds.compareTo(price) >= 0; price = price.add(TEN_CENTS)) { itemsBought++; funds = funds.subtract(price); } System.out.println(itemsBought + " items bought."); System.out.println("Money left over: $" + funds);} DecimalFormat df = new DecimalFormat("0.00");//System.out.println(df.format(9/12)); 收藏 javax.naming.NameNotFoundException: Name ds is not bound in this Context eXtremeTable导出的时候,数字首位0被去掉 关闭窗口遇到的一个问题 跪求JAVA开发GPS车载终端的问题 谁有WebSphere电子书?能传个给我吗? weblogic共享session问题 weblogic老是重启的问题 急救 java大牛都会啥 如何像sql一样动态执行 mongodb 简单的HelloWorld程序怎么会出错阿?请大家指教! 请问那里有中文版的UML和Rational Rose教材下载?
系统的事...
float就是这样 .这是硬件的问题 ... 是cup的问题
你用BigDecimal就不会有问题了
《Effective Java》上写的
final BigDecimal TEN_CENTS = new BigDecimal(".10");
int itemsBought = 0;
BigDecimal funds = new BigDecimal("1.00");
for (BigDecimal price = TEN_CENTS;
funds.compareTo(price) >= 0;
price = price.add(TEN_CENTS)) {
itemsBought++;
funds = funds.subtract(price);
}
System.out.println(itemsBought + " items bought.");
System.out.println("Money left over: $" + funds);
}
System.out.println(df.format(9/12));