【发布时间】:2009-10-12 22:14:27
【问题描述】:
这是一小段 sn-p 代码,当它被调用时,它会输出“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
【问题讨论】:
-
知道了,谢谢大佬们的指教
-
这也可能与缩小和扩大转换有关,并且安全默认为双倍
-
"double" 是默认值的原因是因为 (1) double 远非常精确,并且 (2) double 几乎从不比 float 慢,有时甚至更快。为什么更快?因为进行浮点运算的芯片几乎总是以双精度进行所有内部运算;对浮点数的操作需要将浮点数转换为双精度数,以双精度数进行操作,然后在完成后将其改回浮点数。除非你要分配数百万这样的人,否则你几乎肯定不会受到双打的内存限制,所以使用它们而不是浮点数。
-
太棒了,感谢 eric 的洞察力。
标签: c# parameters floating-point double