簡體   English   中英

如何在調試器或控制台中輸出所有小數位的雙精度值

[英]How to Output a Double Value with all the Decimal Places in Debugger or Console

我希望在調試應用程序時完全提取double值,這樣我就可以使用它構建一個測試用例來輸入我的幾何算法。

如何將double值提取 - 直到C#中double數據類型允許的最后一個小數位 - 並在調試器窗口或使用Console.WriteLine命令輸出?

編輯:我的問題是,如果我堅持輸入整個double值,直到最后一位數字,那么將double值作為輸入的算法將只會失敗。 由於我想在測試用例中重現它,這就是為什么我需要雙值的完整表示。

我有一個DoubleConverter類 ,通過它的聲音完全按照你想要的那樣做。 像這樣使用它:

string text = DoubleConverter.ToExactString(doubleValue);

你需要確保你理解這只是因為輸出有大量的數字,這並不意味着它具有那么高的精度 您可能希望閱讀我在.NET中關於二進制浮點的文章以獲取更多信息 - 當然,您可能會首先了解所有這些內容。

請注意,如果您只想要一個可以往返的字符串值,則不需要任何額外的代碼 - 只需使用“r”格式說明符:

string text = doubleValue.ToString("r");

我同意傑克遜教皇在測試的平等比較中使用容差的一般方法,但我發現有時看到雙精度值所代表的確切值是有用的。 它可以更容易理解為什么特定的計算以某種方式出現。

而不是嘗試將二進制數作為十進制數輸出到非常大的小數位並進行精確比較,而是與作為可接受誤差的epsilon值進行比較,並將epsilon設置得非常小。 例如

 double epsilon = Math.Abs(actual - expected);
 Assert.That(epsilon, Is.LessThan(0.000000000001);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM