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