【发布时间】:2012-01-16 18:33:06
【问题描述】:
我有以下:
string value = "9223372036854775807";
double parsedVal = double.Parse(value, CultureInfo.InvariantCulture);
... 结果是9.2233720368547758E+18,这不是完全相同的数字。我应该如何将字符串转换为双精度而不损失精度?
【问题讨论】:
-
试试
System.Convert.ToDouble -
答案是:使用较短的字符串。双打没有无限的精度;您可以存储在双精度数中的最大奇数只有 16 位长。或者,也许更现实的是,转换为 ulong 而不是 double。
-
@xbonez - 有一阵子没接触过,但很确定这只是同一件事的捷径。
标签: c#