在Java中将双精度型转换为字符串,反之亦然,而又不损失精度
甲 字符串 一个的表示 双 写入和从由文件读 C# 应用。
C#应用程序使用以下片段将双精度型转换为字符串:
value.ToString("R", NumberFormatInfo.InvariantInfo);
C#应用程序使用以下片段将字符串转换为双精度型
double num = double.Parse(s, NumberStyles.Float, (IFormatProvider) NumberFormatInfo.InvariantInfo);
如果要在 Java 应用程序中写入和读取同一文件,您将如何转换类型而不丢失数据?
-
我相信,只要使用就可以
Double.parseDouble()
并且Double.toString()
不会丢失数据。特别是从docs中获取Double.toString()
:m或a的小数部分必须打印多少个数字?必须至少有一位数字来表示小数部分,并且除此以外,还需要与唯一数量不同的数字,以便将参数值与双精度类型的相邻值唯一区分开。也就是说,假设x是此方法针对有限的非零参数d生成的十进制表示形式所表示的精确数学值。则d必须是最接近x的double值;或者,如果两个双精度值均相等地接近于x,则d必须是其中之一,并且d的最低有效位必须为0。
如果要保留确切的字符串表示形式(这不太一样),另一种方法是
BigDecimal
在Java中使用。