简体   繁体   English

小数精度问题| 大十进制

[英]Decimal Precision Issue | Big Decimal

1. 1。

    BigDecimal ap = new BigDecimal(170.8999999999998,   MathContext.DECIMAL64).setScale(2, BigDecimal.ROUND_FLOOR);

result : 170.89 (Required : 170.89) 结果:170.89(必须:170.89)

2. 2。

    BigDecimal ap = new BigDecimal(170.89999999999998, MathContext.DECIMAL64).setScale(2, BigDecimal.ROUND_FLOOR); (1 Extra 9 in value)

result : 170.90 (Required : 170.89) 结果:170.90(必需:170.89)

3. 3。

    BigDecimal ap = new BigDecimal(2401.99).setScale(2, BigDecimal.ROUND_FLOOR);

result : 2401.98 (Required : 2401.99) 结果:2401.98(必填:2401.99)

How to get just 2 digit after decimal from value without rounding. 如何从值取小数点后仅2位而不取整。

PS : I do not want to convert the value to String. PS:我不想将值转换为String。

2401.99 is a double literal , with an actual value just below that. 2401.99是一个double 2401.99 字面量 ,实际值刚好在该值以下。

Use the BigDecimal constructor from a String instead. 请改用StringBigDecimal构造函数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM