我有以下双值
double d = 123456789.8210000000001;
Run Code Online (Sandbox Code Playgroud)
现在我需要将其转换为
String s = "123456789.8210000000001"
Run Code Online (Sandbox Code Playgroud)
究竟.
我使用了以下代码
double d = 123456789.8210000000001d;
DecimalFormat df = new DecimalFormat();
df.setGroupingUsed(false);
df.setMaximumIntegerDigits(20);
df.setMaximumFractionDigits(20);
System.out.println(df.format(d));
Run Code Online (Sandbox Code Playgroud)
但它输出"123456789.821"
当我使用以下代码时
double d = 123456789.8210000000001d;
BigDecimal bd = new BigDecimal(d);
System.out.println(bd.toPlainString());
Run Code Online (Sandbox Code Playgroud)
它给出了123456789.82099999487400054931640625
但我需要确切的价值.
注意:此处整数/小数部分中的位数可以变化.
只要将值存储123456789.8210000000001在a中double,您的精确表示就会以double的精度丢失.
如果你想保留你的确切数字,你应该使用以下String构造函数BigDecimal:
BigDecimal bd = new BigDecimal("123456789.8210000000001");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
686 次 |
| 最近记录: |