有谁知道为什么 C# 中的整数除法返回整数而不是浮点数?
其背后的想法是什么? (这只是 C/C++ 的遗产吗?)
In C#:
float x = 13 / 4;
//== operator is overridden here to use epsilon compare
if (x == 3.0)
print 'Hello world';
这段代码的结果将是:
'Hello world'
严格来说,不存在整数除法(根据定义,除法是产生有理数的运算,整数是有理数的一个非常小的子集。)
虽然新程序员在实际打算使用浮点除法时经常犯执行整数除法的错误,但在实际实践中整数除法是一种非常常见的操作。如果您假设人们很少使用它,并且每次进行除法时都需要记住转换为浮点,那么您就错了。
首先,整数除法要快得多,因此如果您只需要整数结果,则需要使用更有效的算法。
其次,有许多算法使用整数除法,如果除法的结果始终是浮点数,则每次都会被迫对结果进行舍入。我想到的一个例子是改变数字的基数。计算每个数字涉及数字的整数除法和余数,而不是数字的浮点除法。
由于这些(和其他相关)原因,整数除法会产生整数。如果你想得到两个整数的浮点除法,你只需要记住将 1 转换为 adouble
/float
/decimal
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)