有谁知道为什么C#中的整数除法返回整数而不是浮点数?它背后的想法是什么?(这仅仅是C / C ++的遗产吗?)
在C#中:
float x = 13 / 4; //== operator is overridden here to use epsilon compare if (x == 3.0) print 'Hello world';
该代码的结果将是:
'Hello world'
严格来说,没有整数除法(按定义除法是产生有理数的运算,整数是其中的一个很小的子集。)
虽然新程序员在实际打算使用浮点除法时经常犯这种错误,即执行整数除法,但实际上,整数除法是一种非常常见的操作。如果您假设人们很少使用它,并且每次进行除法操作时,您总是需要记住将其转换为浮点数,那您就错了。
首先,整数除法要快得多,因此,如果您只需要整数结果,则可以使用更高效的算法。
其次,有许多算法使用整数除法,如果除法的结果始终是浮点数,则每次都将被迫四舍五入结果。我脑海中的一个例子是更改数字的基数。计算每个数字涉及数字与整数的除法运算,而不是数字的浮点除法。
由于这些(以及其他相关的)原因,整数除法会得出整数。如果你想获得两个整数的浮点除法你只需要记住一个铸到double/ float/ decimal。
double
float
decimal