将 BigDecimal.toPlainString() 转换为 double 以执行算术运算



当我这样做时,我从我的数据库中获取以下值resultSet.getdouble()

2.0006362409E9

我想对这个数字进行算术运算。 我试图使用BigDecimal.toPlainString()获取实际值,然后得到以下值

2000636240.900000095367431640625

当我尝试将 BigDecimal.toPlainString(( 转换为双倍时,我再次以科学记数法获得值。

我想除这个数字 - 我该如何解决这个问题?

您对内部数字表示用户显示有误解。

要像您这样的大数字进行计算,BigDecimal类是正确的选择。是的,您不能使用原始运算符(+/-...(,而必须使用BigDecimal类提供的方法(add()subtract()...(。但作为回报,在使用原始double值计算时,由于固定的数字长度,尤其是在处理分数时,您可以获得几乎无限的精度,尤其是在处理分数时。

您不必为了执行计算而转换为双精度

使用BigDecimal 的全部意义在于,它允许处理有关数字"需要"的所有方面的任意大数字。含义:BigDecimal 有多种计算方法,例如divide((。

换句话说:除非您 100% 确定来自该数据库的数字适合 Java 双精度值的范围 - 否则您可能只是"坚持"使用 BigDecimal 对象。任何可能使用原始双精度的计算也可以使用 BigDecimal 类提供的方法完成。

如果你的数字在双精度范围内(你的例子表明是这样( - 只需使用Double.valueOf(String(即可将该字符串转换为双精度/双精度。那么你一开始就不需要BigDecimal "绕道而行"了!

最新更新