BigDecimal.valueOf(Double.parseDouble("3.141592121212121212");
BigDecimal.valueOf("3.141592121212121212");
谁会有精度丢失?
BigDecimal.valueOf(Double.parseDouble("3.141592121212121212"))
这种方式会有精度丢失,而 BigDecimal.valueOf("3.141592121212121212")
这种方式不会有精度丢失。
原因是,Double.parseDouble()
方法将字符串 "3.141592121212121212" 解析为 double
类型的值时,由于 double
类型的精度是有限的,会导致精度损失。
相比之下,直接使用 BigDecimal.valueOf("3.141592121212121212")
方法将字符串 "3.141592121212121212" 转换为 BigDecimal
对象,不会有精度丢失。BigDecimal
类提供了高精度的数值表示和计算,可以保持字符串所表示的精确数值。
总结:如果你需要保持精确度,特别是对于长小数位数或需要高精度计算的情况,建议使用BigDecimal.valueOf()
的方式来处理。这样可以避免 double
类型的精度限制。