下面是一小段代碼,當它調用它輸出'double'時。爲什麼?這背後的理由是什麼?爲什麼不打印'浮動'?在C#中調用Double&Float方法參數時執行的代碼#
class source
{
static void Main()
{
Receiver r = new Receiver();
r.Method1(1.1);
}
}
class Receiver
{
public virtual void Method1(double f) { Debug.Print("double"); }
public virtual void Method1(float f) { Debug.Print("float"); }
}
TIA
明白了,感謝傢伙們的啓示 – SoftwareGeek 2009-10-12 22:24:46
這可能也與窄和寬轉換有關,並且可以安全地默認爲加倍 – SoftwareGeek 2009-10-12 22:29:16
「雙」是默認的原因是因爲(1)雙是遠,遠更精確,(2)double幾乎不會比float更慢,有時更快。爲什麼它更快?因爲執行浮點運算的芯片幾乎總是在雙打中進行所有內部操作;浮動操作需要將浮動轉換爲雙打,在雙打中進行操作,然後在完成後將其更改回浮動。除非你打算分配數以百萬計的這些傢伙,否則幾乎肯定不會受到雙打的內存限制,所以用它們代替浮游物。 – 2009-10-13 06:56:49