C# Double.ToString() 错误结果

标签 c# string format tostring

我正在尝试使用 ToString() 方法显示 double 值。 该值为 1.000000000000113。 , 使用 Double.ToString("F16") 结果 1.0000000000001100 , 使用 Double.ToString("F17") 结果 1.00000000000011000

我试过 Double.ToString("0.0000000000000000") 结果 1.0000000000001100

似乎 ToString() 将第 14 个数字以上的所有小数设置为零。

我正在使用 .Net 4.5.2。 我怎么解决这个问题。

最佳答案

floatdouble float ( IEEE 754 ) 作用于符号尾数指数 以 2 为底,恰好数字 1.000000000000113 不适合 以 2 为底数。

但是,我们确实有浮点类型确实base 10(decimal)上工作,它对有理数有更高的精度,还没有数值范围

  • float近似范围(±1.5 x 10^−45±3.4 x 1038)
  • double近似范围(±5.0 × 10^−324±1.7 × 10308)
  • decimal近似范围(±1.0 x 10^-28±7.9228 x 1028)

示例

double val = 1.000000000000113;
Console.WriteLine(val);
decimal val2 = 1.000000000000113m;
Console.WriteLine(val2);

输出

1.00000000000011
1.000000000000113

Full Demo Here

关于C# Double.ToString() 错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418167/

相关文章:

c# - 对同一 http 主机的多个同时请求

java - 在 *Unicode 代码点* 上按字典顺序比较两个 Java 字符串的首选方法是什么?

python - 使用空格分隔符连接多个 numpy 字符串数组

java - 将字符串转换为日期然后格式化日期

c# - 匹配相对 URL 的正则表达式

c# - 可以模仿我自己的配置文件的 web.config 重启行为吗?

Android edittext 仅输入货币格式

C# 日期时间格式

c# - 将字符串值传递给双引号

c# - 如何计算子字符串的出现次数?