我正在使用在 java 应用程序中实现脚本引擎的开源项目 (axil),并且在尝试利用 BigDecimal 的舍入时遇到了一个主要的绊脚石。似乎 BigDecimal 正在将我的输入转换为科学记数法,然后将我传递的精度应用于数字的 SN 表示的系数,而不是它的非 SN 表示。例如:
new BigDecimal("-232454.5324").round(new MathContext(2, RoundingMode.HALF_UP)).toString()
产生 的结果-2.3E+5
。这给我带来了两个问题。首先,我期待-232454.5
( -2.324545E+5
) 的结果,因此得到-230000
抛出任何涉及结果的数学。其次,我不期望,也找不到解决方法,在 SN 中获得结果(尽管我希望有一种我还没有偶然发现的格式化方法)。
现在由于项目的性质,我们可以对传入 round() 方法的数字的大小/类型做出很少的期望,因此任何解决方案都需要高度模块化。有没有人有什么建议?如果有帮助,这里是项目中此错误的谷歌代码问题报告的链接。 这是项目主页的链接。
很感谢任何形式的帮助。