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

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

Mary-Kate Olsen
發布: 2025-01-05 16:57:41
原創
171 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板