嘗試調試下面的簡單程序,並將鼠標放在每個步驟中的x
(或「添加監視」爲x
或其他)。Visual Studio在調試過程中如何顯示System.Double?
using System;
using System.Globalization;
static class Program
{
static double x;
static void Main()
{
x = 2d;
// now debugger shows "2.0", as if it has used
// x.ToString("F1", CultureInfo.InvariantCulture)
x = 8.0/7.0;
// now debugger shows "1.1428571428571428", as if it had used
// x.ToString("R", CultureInfo.InvariantCulture)
// Note that 17 significant figures are shown, not the usual 15.
x = -1e-200/1e200;
// now debugger shows "0.0"; there is no indication that this is really negative zero
//
Console.WriteLine(1.0/x); // this is negative infinity
}
}
所以,顯然VS都有自己的方式來顯示System.Double
。哪種方法需要這個目的?有沒有一種方法可以通過編程獲得相同的字符串表示?
非常豐富的答案。但它並沒有真正告訴我**如何調用''''''''''''''''''''。我懷疑'ToString'方法也可以通過調用'_ecvt_s'來工作?另外,爲字符串添加「.0」部分可能是通過你所謂的清理代碼完成的,所以我通過某種「extern」方法調用'_ecvt_s'不會單獨完成這項工作。所以也許答案很簡單:不,我不能以編程方式獲得相同的字符串? – 2012-04-25 15:53:37
@JeppeStigNielsen不太清楚你調用_ecvt_s的含義。你能詳細說明一下嗎?至於自己得到完全相同的字符串,是的,除非您有方便的確切清理代碼,否則很難複製。 – JaredPar 2012-04-25 16:36:45
我不知道'_ecvt_s'的輸出如何依賴於參數,比如'_SizeInBytes'和'_Count'。但由VS顯示的字符串似乎總是包含小數點右側的至少一位數字,但其他字段沒有尾隨零。他們之所以這樣做「。0「的意思是,它更清楚地表明它不是'Int32',而是'Double'。 – 2012-04-25 17:25:32