如何提取字符串创建的scale为2的BigDecimal对象的值得到599
解决方案
要将scale为2的BigDecimal值5.99转换为整数599,最稳妥的方式是直接调用BigDecimal原生的movePointRight()方法右移小数点,避免自行处理精度或者字符串转换带来的异常问题。
示例代码
BigDecimal decimal = new BigDecimal("5.99"); // 右移小数点的位数等于BigDecimal的scale值,通用适配不同scale的场景 long result = decimal.movePointRight(decimal.scale()).longValue(); // 如果你确定当前对象scale固定为2,也可以直接写死位数 // long result = decimal.movePointRight(2).longValue();
执行后result的值就是你需要的599。
注意事项
- 如果待处理的数值很大,超出了long类型的取值范围,可以改用
toBigInteger()接收结果:BigInteger result = decimal.movePointRight(decimal.scale()).toBigInteger(); - 不推荐通过转字符串替换小数点的方式实现,该方式需要额外处理科学计数法、本地化格式等边界场景,出错概率更高。
内容的提问来源于stack exchange,提问作者Victor Cui
相关产品推荐
相关产品推荐

