java - 字符串到 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 的逻辑工作正常,我想要数据库中的确切值?
解决方案
在这种情况下,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
推荐阅读
- javascript - 自动播放视频不适用于 Android 和华为 Devive
- php - 如何让 @inertia 指令在 InertiaJS 中与 Laravel 一起工作?
- c - 我的程序的第一个模块,它不能正常工作
- java - 如何使用 springdoc 在 Swagger 文档中更改 LocalDateTime 的默认模式?
- ansible-awx - 当我尝试删除实例时,awx-manage 无法正常工作
- go - 将未初始化的结构传递给函数
- tensorflow - 快照未保存在 tf.data.experimental.save
- azure - Azure 函数 .net 5.0 隔离(extentions.json 不生成)
- rust - 如何在 Rust FFI 库中重用 Tokio 运行时
- database - 有没有办法通过 API 配置 AWS Lightsail 数据库公共模式?