String sTerms="118";
String sRate="5.1";
String sBillSum="345500"sEndorseTimes="3";
sActualint =""
sActualint = Terms*sRate*sBillSum/30000+sEndorseTimes*sRate*sBillSum/30000;为什么sActualint最后结果是7086.36499999
我想得到的是7086.37
String sRate="5.1";
String sBillSum="345500"sEndorseTimes="3";
sActualint =""
sActualint = Terms*sRate*sBillSum/30000+sEndorseTimes*sRate*sBillSum/30000;为什么sActualint最后结果是7086.36499999
我想得到的是7086.37
解决方案 »
- 安装jbuilder注册出错?-高人指点
- 既然String s = new String("xyz"); 那么String s="xyz" 创建了几个String Object呢?
- 求教!!关于java全局变量的问题
- 关于jList的自动刷新问题.
- 初学java,问两个问题,急。。。。。(散分100)
- C#.net 专向 Java,请师兄姐指点条直路。
- 请问FileWriter以及BufferedWriter这样的文件读写类和操作系统有关吗
- 给我个建议!! 我是学JAVA的 现在要学JSP。能告诉我怎么样学吗?
- RMI配置问题,能者进.
- 100分求:如何打印图片?
- 请问一个关于package的问题,初学者,不吝赐教
- DOM 解析问题(强烈求救)
执行的结果却是5.3420000000000005
System.out.println(4.015 * 100);执行的结果是401.49999999999994
都有误差。解决方案使用BigDecimal,如:
System.out.println((new BigDecimal("123.3")).divide(new BigDecimal("100")));
System.out.println((new BigDecimal("4.015")).multiply(new BigDecimal("100")));但是如果依然使用:
System.out.println((new BigDecimal(123.3)).divide(new BigDecimal(100)));
System.out.println((new BigDecimal(4.015)).multiply(new BigDecimal(100)));原因是因为在内存中存储浮点数的方式和整型不一样,将浮点数传入函数时就已经有差距了,所以需要传入字符串。
如果是数据库中存储的浮点型数据,则需要使用ResultSet.getBigDecimal得到BigDecimal再进行运算