gpt4 book ai didi

c# - 有没有办法准确地格式化 C# double?

转载 作者:IT王子 更新时间:2023-10-29 04:51:23 25 4
gpt4 key购买 nike

<分区>

有没有办法得到一个字符串,显示double精确值,所有小数位需要表示它的精确以 10 为底的值?

例如(通过 Jon Skeet and Tony the Pony ),当您键入时

double d = 0.3;

d 的实际值正​​好是

0.299999999999999988897769753748434595763683319091796875

每个二进制浮点值(忽略诸如无穷大和 NaN 之类的东西)都将解析为终止十进制值。因此,如果输出中有足够的精度数字(在本例中为 55),您始终可以获取 double 中的任何内容,并以十进制显示其精确值。当需要解释浮点运算的怪异之处时,能够向人们展示确切的值将非常有用。但是有没有办法在 C# 中执行此操作?

我已经尝试了所有 standard numeric format strings ,无论是否指定精度,都没有给出确切的值。一些亮点:

  • d.ToString("n55") 输出 0.3 后跟 54 个零——它执行通常的“四舍五入到您可能想要看到的内容”,然后定位最后有更多的零。如果我使用 0.00000...
  • 的自定义格式字符串也是一样
  • d.ToString("r") 为您提供一个具有足够精度的值,如果您解析它,您将获得与开始时相同的位模式 --但在这种情况下,它只输出 0.3。 (如果我处理的是计算结果而不是常量,这会更有用。)
  • d.ToString("e55") 输出 2.9999999999999999000000000000000000000000000000000000000e-001 - 部分精度,但不是全部我在找。

是否有我遗漏的格式字符串、其他库函数、NuGet 包或其他库,能够将 double 完全精确地转换为字符串?

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