freemarker中number转换问题解析

问题描述:项目开发过程中,freemarker中做数值转换发现个奇怪的问题,参数传值${ (summary.clabsQty)?number}      其中 summary.clabsQty传值0.5最后显示0,传值1.5最后显示2,达不到预想的结果!再不断的实验过程中发现${ (summary.clabsQty+1)?number} 可以达到预想结果:传值0.5最后显示1,传值1.5最后显示2,传值0.4显示0


问题根源:上述的四舍五入都是根据一半原则,往最近的符合数字上靠近,即1.4四舍五入 处于1和2之间靠近1最后的值为1.但是1.5和0.5这种,通过上面的例子可以看到都是往偶数上靠的,即0.5处于0和1之间,靠近偶数0,1.5则靠近偶数2


进一步分析问题:summary.clabsQty+1可以达到预期值.如果单从表面很难理解!!!!summary.clabsQty为0.5,加1以后为1.5,四舍五入应该为2,实际结果确为1...这是因为此处的+1并不是数值相加,而是做的字符串拼接!!!!  本质上是0.51做转换.凑巧在有小数的情况下打破了中间值的均衡!!!summary.clabsQty如果一直都是带小数的上述方式不会出现问题.如果是纯整数则直接把值扩了10倍+1.上述方法还是不可取的


问题总结:不建议做前端的四舍五入,最后后端处理好直接展示!!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值