% 结果不致,求大侠!!! System.out.println(9.0 % 1.5); //结果:0.0System.out.println(9.0 % 1.8); //结果:1.799999999998请问为什么会出现如此情况?我想应该全部是0.0才对啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这与浮点数的保存精度有关系,你可以使用BigDecimal代替浮点数做精确计算。 这个问题来自于浮点运算精度的问题。虽然楼主的第二条语句的结果不是准确的1.8,但是1.79999999998这个结果编译器认为是正确的。如果想得到高精度结果,建议使用Decimal类类型来处理。另外%是整除运算,一般用在整数范围内。 直接浮点数运算是不准的,需要用到BigDecimal BigDecimal可以%吗?能否给出代码示例呢?BigDecimal可以%吗?能否给出代码示例呢? BigDecimal bd1 = new BigDecimal((float)9.0 % 1.5); BigDecimal bd = new BigDecimal((float)9.0 % 1.8); System.out.println( bd1.floatValue()); System.out.println( bd.floatValue()); 诸位,还是不能解决最终问题System.out.println(9.0 % 1.5); //结果:0.0System.out.println(9.0 % 1.8); //结果:1.799999999998追问一句:为什么,上面的结果是0.0,而下面不是呢 浮点运算可能导致舍入误差。在 Java 程序中使用浮点数和小数充满着陷阱。浮点数和小数不象整数一样“循规蹈矩”,不能假定浮点计算一定产生整型或精确的结果,虽然它们的确“应该”那样做。最好将浮点运算保留用作计算本来就不精确的数值,譬如测量。如果需要表示定点数(譬如,几美元和几美分),则使用 BigDecimal 。http://justjavac.iteye.com/blog/1073775 关于vector 中的一个问题 复用类 JAVA 基础题 求答案 呵呵 相当于散分 求助 菜鸟第一天的JAVA问题1 IE无法载入Applet,载入出错. 复旦大学计算机博士入学考试的题目 :)关于按时结账的一点看法和提议-----各兄弟、姐妹都来看看吧!! 谁能告诉我哪能下载jdk1.4和jbuilder!! 谢谢回答!那里有关于数据库连接池的较详细的应用实现? java初学者求教程序运行 junit源代码中通过getMethod()获得test方法后,为什么仍然要多此一举检查是否为public???
能否给出代码示例呢?BigDecimal可以%吗?
能否给出代码示例呢?
BigDecimal bd = new BigDecimal((float)9.0 % 1.8);
System.out.println( bd1.floatValue());
System.out.println( bd.floatValue());
System.out.println(9.0 % 1.8); //结果:1.799999999998
追问一句:为什么,上面的结果是0.0,而下面不是呢
http://justjavac.iteye.com/blog/1073775