【发布时间】:2017-02-27 09:25:33
【问题描述】:
通过一个小测试,我使用以下代码:
double number;
var value = "123456789.123456789";
var style = NumberStyles.AllowDecimalPoint;
var culture = CultureInfo.InvariantCulture;
if (Double.TryParse(value, style, culture, out number))
Debug.WriteLine("Converted '{0}' to {1}.", value, number);
else
Debug.WriteLine("Unable to convert '{0}'.", value);
结果是
将“123456789.123456789”转换为 123456789.123457。
这是因为value 太长而无法放入双精度数。只允许 16 位数字。但是由于信息丢失,TryParse() 不应该返回false 吗?
【问题讨论】:
-
否,因为它会解析它。只是没有足够的位来存储完整的值。
标签: c# .net-4.0 double tryparse