日期:2014-05-18  浏览次数:20699 次

请教一些jsp浮数相加的问题,相加完的结果不对
请教一些jsp浮数相加的问题,相加完的结果不对
我从数据库取出些数据--用的rs.getFloat( " ")取的,如下
3.02   +   123.02   =146.01999   (应该为146.02)
不知道为什么?


------解决方案--------------------
3.02 + 123.02 =146.01999 ?????????对吗???
好象应该是 126.04吧
------解决方案--------------------
浮点数的精度问题
------解决方案--------------------
取出来的时候数值肯定是对的,误差主要产生在进行数值运算的时候。

浮点数运算精度问题,如果对计算结果要求不十分地高的话,可以采用

String str = String.format( "%.2f ", 23f + 123.02f); 转成字符串。

如果对计算要求高的话(比如财务系统的话),需要采用 BigDecimal 来进行处理。
------解决方案--------------------
%.2f 调float的精度
------解决方案--------------------
BigDecimal a = rs.getBigDecimal( "a ");
BigDecimal b = rs.getBigDecimal( "b ");

BigDecimal c = a.add(b);
------解决方案--------------------
看一下你的数据库中的字段的属性设置
单精度还是双精度~
------解决方案--------------------
既然结果只要求小数点后两位,管那么多干嘛,一种是一开始设置精度,另一种是对最后运算完的结果手工进行四舍五入取合适位数。两者各有适用处,看实际情况选择。
------解决方案--------------------
用 BigDecimal