您的位置:首页 > 其它

freemarker的数字不精确问题

2015-07-03 10:31 190 查看
项目使用的是ssh框架,页面利用.ftl文件进行显示,页面使用freemarker进行取值的时候,原本数字是0.32000,显示的时候变成了

0.31999999,即数字不精确问题。

分析:1:通过hibernate查询数据库,在后台打印数字,显示0.32,即查询数据库是没有问题的。

2:因此我们可以判断是freemarker通过${xxxx}取值出现了bug,原因出在查询数据库用的实体类(entity)上,

为了实体类能够接受null值,把属性都定义成了包装类(Float),问题就是这里,当页面取值的时候,如果属性是

包装类会很麻烦,既不能对数值进行格式化,还可能会出现我遇到的数值不精确问题。

解决办法:为了能接受null值,不能用基本类型(int,float...),只能用包装类,那么不要用Float,可以用Double,还可以用

String,也可以试试其他数值类型的。

备注:如果用了基本类型,当数据库中字段为null时,会报 org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type set...

诸如此类的Exception 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: