【问题标题】:Remove Decimal from BigDecimal [duplicate]从 BigDecimal 中删除 Decimal [重复]
【发布时间】: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


【解决方案1】:

使用round时,可以指定舍入模式为ROUND_FLOOR

【讨论】:

  • 我这样做了,BigDecimal bg1 = new BigDecimal(300.99); bg1.setScale(0, RoundingMode.FLOOR);它返回 300.99000000000000909494701772928237915039062
  • 对我来说很好。请记住,BigDecimal 是一个不可变类,因此您必须存储 setScale 的结果。
  • 有效,我没有存储结果。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多