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 。
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 。
相关文章推荐
- 设计模式五 监听器模式(android) & 代理模式(ios)
- 博客开通
- 词典查询
- spring事务管理几种方式
- AndroidKK4.4 Power key电量屏幕时button light先亮LCD后亮的卡顿问题分析
- Android 带清除功能的输入框控件EditText
- Genymotion--最快的安卓模拟器 测试与模拟APP应用必备
- 微信分享到朋友圈的脚本奥秘(转)
- 15 个有用的 MySQL/MariaDB 性能调整和优化技巧(转载的一篇好文)
- Android 数据库 大量插入 事务开启
- ACdream 1097 线段相交(直线与线段相交模板)
- WPF 呼吸灯特效
- eclipse转android studio必看。
- DataColumn 类
- C++嵌套类的使用及对外部类的访问权限
- iOS 面试题之多线程是什么?
- CSS中block与inline的简单区别
- VS2010出现FileTracker : error FTK1011编译错误的解决办法
- A星寻路算法在unity3d中的实现与简单应用
- 友盟第三方分享