我正在尝试将 long 1099 转换为 BigDecimal 10.99; 这给了我 11.00:
long cost = 1099;
MathContext CENTS = new MathContext(2,RoundingMode.HALF_EVEN);
BigDecimal result = (new BigDecimal(cost,CENTS)).movePointLeft(2);
据我所知这应该可行。我的愚蠢错误是什么?
最佳答案
错误在于小数位数和精度之间存在区别。 MathContext
的构造函数接受一个精度,即小数点两侧的小数位数总数。 (例如,您拥有的原始 BigDecimal
本质上是 11 * 10^2
,就好像它采用科学记数法一样。)
将其更改为new MathContext(4, RoundingMode.HALF_EVEN)
。
关于java - 从未缩放的 long 创建 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63163036/