【发布时间】:2016-12-02 05:51:40
【问题描述】:
我有一个 BigDecimal 数字,我只想从中删除十进制数字, 例如,如果我有 200.88,那么输出应该是 200? 我尝试了 Bigdecimal 舍入函数,但他们不会完成这项工作
【问题讨论】:
-
我打赌你忘记了roundingMode
-
Math.floor(200.88) - 用于下限值或 Math.ceil(200.88) - 用于上限值
-
我这样做了,BigDecimal bg1 = new BigDecimal(300.99); bg1.setScale(0, RoundingMode.FLOOR);它返回 300.99000000000000909494701772928237915039062
-
永远不要用双精度数初始化 BigDecimal,如果可以避免的话。请改用
BigDecimal bg1 = new BigDecimal("300.99");。双打只是近似值,因此是“意外”的结果。并做bg1 = bg1.setScale(etc...);。 BigDecimal 是不可变的,setScale()返回一个 new BigDecimal,它不会修改其目标。
标签: java rounding bigdecimal