我有一个从文件中读取的字符串,值为:38.739793110376837
当我使用以下方法将此值转换为double时:
double.parseDouble("38.739793110376837");
我得到的结果是:38.73979311037684
我如何在双变量中获得原始值?
我不想使用BigDecimal数据类型。
答案 0 :(得分:8)
我如何在双变量中得到原始值?
你不能。与原始值最接近的double
正好 38.739793110376837148578488267958164215087890625
这被转换为" 38.73979311037684"因为它是唯一标识double
值的最短值。来自documentation:
m或a的小数部分必须打印多少位数?必须至少有一个数字来表示小数部分,并且除此之外必须有多个,但只有多少,更多的数字才能唯一地将参数值与double类型的相邻值区分开来。也就是说,假设x是由该方法为有限非零参数d生成的十进制表示所表示的精确数学值。那么d必须是最接近x的double值;或者如果两个double值同样接近x,那么d必须是其中之一,d的有效位的最低有效位必须为0.
如果您希望完全保留原始值,则应使用BigDecimal
。