为了账号安全,请及时绑定邮箱和手机立即绑定

从 BigDecimal 输入获取十进制数的小数部分

从 BigDecimal 输入获取十进制数的小数部分

慕容森 2023-11-10 16:38:03
我正在尝试使用 BigDecimal 将十进制数分成两部分(整数部分和小数部分)。BigDecimal price1  = BigDecimal.valueOf(300.50);BigDecimal price2  = BigDecimal.valueOf(300.05);BigDecimal fractionalPart1  = price1.remainder(BigDecimal.ONE);BigDecimal fractionalPart2  = price2.remainder(BigDecimal.ONE);System.out.println(fractionalPart1.movePointRight(price1.scale()).abs().intValue());  // Output is 5System.out.println(fractionalPart2.movePointRight(price2.scale()).abs().intValue());  // Output is 5上述两种情况的输出都是 5。如何纠正这个问题(保留将其转换为字符串的选项),以便正确给出 50 和 5。
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

好的,这是解决方案。

通过使用 valueOf 并指定双精度值,可以删除尾随零。这会影响规模。如果要保留尾随零,则需要使用 BigDecimal 的 String 构造函数版本。

所以改变这些

      BigDecimal price1 = BigDecimal.valueOf(300.50);      
      BigDecimal price2 = BigDecimal.valueOf(300.05);

对这些

      BigDecimal price1 = new BigDecimal("300.50");      
      BigDecimal price2 = new BigDecimal("300.05");


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 191 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信