在C# 中格式化雙精度數以進行輸出時,請務必注意輸出與調試器中顯示的值不同。原因如下:
與輸出精度由格式說明符確定的 C 不同,C# 在應用任何格式之前將所有雙精度數舍入為 15 位有效十進制數字。出現這種差異的原因是 C# 優先考慮準確性而不是請求的精確度。
Visual Studio 偵錯器直接顯示雙精度數的內部二進位表示,因此與格式化輸出存在差異。
雖然C#缺乏內建對於精確的十進位格式的解決方案,您可以從內部二進位資料手動建構字串表示形式。或者,您可以使用第三方函式庫,例如 Jon Skeet 的 DoubleConverter,它提供了用於精確小數輸出的 ToExactString 方法。
使用 DoubleConverter 將雙精確度格式化為 20 位元小數:
double i = 10 * 0.69; Console.WriteLine(DoubleConverter.ToExactString(i));
以上是為什麼 C# 雙格式和偵錯器值不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!