前端保留两位有效数字_需保留⼩数点两位,但同时不要⼩数点后多余0的前后台代码实现(转载)...
今天碰到⼀个需求。关于⼩数点的处理,看起来⾮常简单的事情,却花了⼀定时间做了⼀些试验。最后简单总结⼀下,以便备忘。
需求简化⼀下表达是这样的:
有A、B两列,A/B=C。这3列在数据库中都以decimal存放。
bigdecimal除法保留小数
在应⽤中,要求这3列,最多保留两位⼩数,去掉⼩数点后⽆意义的0。举例如下:
3.03表⽰为3.03
3.30表⽰为3.3
3.0表⽰为3
前后端都会改变这⼏个数据。
1、前端实现。(javascript)
前端javascript⽽⾔,因为⼩数点精度计算经常有误差,为确保得到2位⼩数点,调⽤了toFixed函数。但是,toFixed以后,不管⼩数点后是不是0,都保留2位。
var a = 6.02;
var b = 3.01
var c = Fixed(2) ;//c得到了2.00
为了得到2,想了⼀个迂回的办法:c =
Fixed(2)*100/100
2、后端实现。(java)
⽤DecimalFormat("0.##")即可。
BigDecimal a = new BigDecimal(“6.02”);
BigDecimal b = new BigDecimal(“3.01”);
与js不同,不能⽤*100/100的⽅式,因为java中BigDecimal的运算⼩数点是以公式中各项的最长⼩数点位数作为最终结果的⼩数点位数。这样处理后结果仍然是2位数。
⽤DecimalFormat(“0.##”)即可解决。