首页 > 解决方案 > 字符串到 BigDecimal 值

问题描述

有人可以帮我获得确切的价值BigDecimal吗?

我的代码如下,

import java.math.BigDecimal;
public class HelloWorld{

     public static void main(String []args){
         String x="2.7955814565E10";
         BigDecimal y=new BigDecimal(x);
         System.out.println(y.toPlainString());
     }
}

我在数据库中的实际值是27955814565.0,一个String. 我从 DB 中读取了这个字符串,并将其设置在一个 bean 类中,其中 amt 字段的类型为字符串,使用值“2.7955814565E10”。当我尝试将其转换为 a 时,BigDecimal我得到 27955814565 而不是 27955814565.0。

有人可以告诉我这是什么问题,因为对于其余所有字段,将字符串值转换为 BigDecimal 的逻辑工作正常,我想要数据库中的确切值?

标签: javabigdecimal

解决方案


在这种情况下,BigDecimal 不会推断出额外的数字。

如果输入是

String x = "2.79558145650E10"; // note the extra 0

你得到预期的结果。您也可以根据需要添加数字。

String x = "2.7955814565E10";
BigDecimal y = new BigDecimal(x);
if (y.scale() < 1)
    y = y.setScale(1);
System.out.println(y.toPlainString());

印刷

27955814565.0

顺便说一句,如果您的输入是

String x = "2.7955814565000E10"; // note the extra 000

输出是

27955814565.000

推荐阅读