我想实现最大的整数函数.["最大整数函数"是一个非常 标准的名称,也称为地板函数.]
int x = 5/3;
Run Code Online (Sandbox Code Playgroud)
我的问题是,由于5/3会产生双倍的精度,可能会有更多的精度损失?
编辑:最大整数函数是小于或等于X的整数.示例:
4.5 = 4
4 = 4
3.2 = 3
3 = 3
Run Code Online (Sandbox Code Playgroud)
我想知道的是5/3会产生双倍?因为如果是这样,我将在转换为int时失去精度.
希望这是有道理的.
你将失去商的小数部分.所以是的,有了更多的数字,你会有更多的相对精度,比如与之相比5000/3000.
但是,5 / 3将返回一个整数,而不是一个整数.为了强制它划分为双倍,将股息分类为static_cast<double>(5) / 3.
整数除法给出整数结果,因此 5 / 3 是 1,5 % 3 是 2(余数运算符)。然而,这并不一定适用于负数。在最初的 C++ 标准中,-5 / 3 可以是 -1(向零舍入)或 -2(下限),但建议使用 -1。在最新的 C++0B 草案(几乎可以肯定非常接近最终标准)中,它是 -1,因此查找负数下限更加复杂。