gpt4 book ai didi

c# - 为什么 double.TryParse() 在精度 > 16 时返回 true

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:48 25 4
gpt4 key购买 nike

通过一个小测试,我使用了以下代码:

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);

结果是

Converted '123456789.123456789' to 123456789.123457.

这是因为 value 太长而无法放入 double 中。只允许使用 16 位数字。但是 TryParse() 不应该因为信息丢失而返回 false 吗?

最佳答案

MSDN documentation已经强调了这个事实

However, because of a loss of precision, the values may not be equal

并且不构成转换失败,而是发生了

if the s parameter is null or String.Empty, is not in a format compliant with style, represents a number less than MinValue or greater than MaxValue, or if style is not a valid combination of NumberStyles enumerated constants.

关于c# - 为什么 double.TryParse() 在精度 > 16 时返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42482000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com