首页 >后端开发 >C++ >如何在 C# 中准确输出 Double 的精确十进制值?

如何在 C# 中准确输出 Double 的精确十进制值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-05 16:57:41168浏览

How Can I Accurately Output the Exact Decimal Value of a Double in C#?

在 C# 中格式化双精度值

输出双精度值时,C# 在应用任何格式之前会自动将它们四舍五入到 15 位有效数字。这可能会导致格式化输出与 double 的实际值之间的差异。

String.Format 的问题:

C# 中的 String.Format 方法仅影响显示格式化的数字。它不会调整基础双精度值的精度。因此,String.Format("{0:F20}", i) 将显示 20 位小数,但 double 的实际值可能仍然在内部四舍五入到 15 位小数。

示例:

考虑以下代码:

double i = 10 * 0.69;
Console.WriteLine(String.Format("  {0:F20}", i));

输出将是 6.90000000000000000000 ,即使 i 的实际值更接近 6.89999999999999946709。

解决方案:

要输出 double 的精确十进制值,您可以使用 Jon Skeet's双转换器类。此类有一个 ToExactString 方法,该方法返回双精度型的精确十进制表示形式。然后,您可以根据需要格式化字符串。

例如:

double i = 10 * 0.69;
Console.WriteLine(DoubleConverter.ToExactString(i));

这将输出 6.89999999999999946709294817992486059665679931640625 ,这是 i.

的精确十进制表示形式

以上是如何在 C# 中准确输出 Double 的精确十进制值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn