一尘不染

为什么C#中的整数除法返回整数而不是浮点数?

c#

有谁知道为什么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'

严格来说,没有整数除法(按定义除法是产生有理数的运算,整数是其中的一个很小的子集。)


阅读 432

收藏
2020-05-19

共1个答案

一尘不染

虽然新程序员在实际打算使用浮点除法时经常犯这种错误,即执行整数除法,但实际上,整数除法是一种非常常见的操作。如果您假设人们很少使用它,并且每次进行除法操作时,您总是需要记住将其转换为浮点数,那您就错了。

首先,整数除法要快得多,因此,如果您只需要整数结果,则可以使用更高效的算法。

其次,有许多算法使用整数除法,如果除法的结果始终是浮点数,则每次都将被迫四舍五入结果。我脑海中的一个例子是更改数字的基数。计算每个数字涉及数字与整数的除法运算,而不是数字的浮点除法。

由于这些(以及其他相关的)原因,整数除法会得出整数。如果你想获得两个整数的浮点除法你只需要记住一个铸到double/ float/
decimal

2020-05-19