首頁 >後端開發 >C++ >如何在 C# 中準確輸出 Double 的精確十進位值?

如何在 C# 中準確輸出 Double 的精確十進位值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-05 16:57:41193瀏覽

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 的實際值,即使 i 的實際值更接近的實際值,即使 i 的實際值更接近的實際值6.89999999999999946709。

解決方案:

要輸出 double 的精確十進位值,您可以使用 Jon Skeet's雙轉換器類別。此類別有一個 ToExactString 方法,該方法傳回雙精度型的精確十進位表示形式。然後,您可以根據需要格式化字串。

例如:

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

這將輸出 6.89999999999999946709294817992486059665679931640625 ,這是進位,這就是2

以上是如何在 C# 中準確輸出 Double 的精確十進位值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn