c#将字符串转换为双倍精度损失
本文关键字:精度 损失 字符串 转换 | 更新日期: 2023-09-27 18:20:19
我有以下内容:
string value = "9223372036854775807";
double parsedVal = double.Parse(value, CultureInfo.InvariantCulture);
并且结果是CCD_ 1,其不是完全相同的数字。如何在不损失精度的情况下将字符串转换为双精度?
double
只能保证16位(大约)小数位数的准确性。您可以尝试切换到decimal
(它有更多的比特可供播放,并具有足够的净空来保持该值)。
由于定义了双精度(二进制浮点运算的(IEEE 754)标准),您无法在不损失精度的情况下将9223372036854775807转换为double
。
默认情况下,Double值包含15位小数精度,尽管在内部最多保持17位数字。
使用Decimal可以获得此处所需的精度。但是,请注意,Decimal将不会具有与double相同的存储范围。
请参阅C#是否可以存储比doubles更精确的数据?