【发布时间】:2012-04-08 03:20:01
【问题描述】:
所有有经验的 C# 程序员(我认为这来自 C)都习惯于对除法中的整数进行强制转换以获得十进制/双精度/浮点结果而不是 int(实际结果被截断)。
我想知道为什么要这样实现?如果两个数字都是整数,是否有充分的理由截断结果?
【问题讨论】:
-
整数数学就是这样工作的。
-
我会说向后兼容和逻辑(
int/int=int而不是int/int=double)。任何使用过任何其他编程语言的人都会预料到这种行为。有没有其他语言以其他方式做到这一点? -
@jgauffin Pascal 和 Basic 对 double 和 int 除法有不同的运算符,其中结果的类型取决于运算符,而不是参数。
-
@jgauffin yes - Pascal(或至少 Delphi)将整数除法的结果实现为浮点数。当我切换到 C 语言时,结果是一个四舍五入的整数,这让我很恼火。毕竟,在学校,如果你说 3 除以 2 = 1,你的数学老师就不会被打动!
-
@jgauffin,Python 3 给出了
int / int = double。 Python 2 以另一种方式工作,但现在如果您需要整数结果,他们添加了第二个运算符//。