有人可以解释一下它的功能吗标准::fmod and std::余数工作。在这种情况下std::fmod
,有人可以解释一下步骤来说明如何:
std::fmod(+5.1, +3.0) = 2.1
同样的事情也适用于std::remainder
这可能会产生负面结果。
std::remainder(+5.1, +3.0) = -0.9
std::remainder(-5.1, +3.0) = 0.9
正如参考文献所述标准::fmod:
除法运算的浮点余数x/y
这个函数计算出来的值正是x - n*y
, where n
is x/y
其小数部分被截断。
返回值有与相同的符号 x
并且小于y
在幅度上。
以问题中的例子为例,当x = +5.1
and y = +3.0
,
x/y
(5.1/3.0 = 1.7)
其小数部分被截断后为 1。所以n
is 1
。所以fmod
将产生x - 1*y
这是5.1 - 1 * 3.0
这是5.1 - 3.0
这是2.1
.
参考状态为std::余数:
除法运算的 IEEE 浮点余数x/y
这个函数计算出来的值正是x - n*y
,其中值 n 是最接近精确值的整数值x/y
. When |n-x/y| = ½
, 价值n
被选择为均匀的。
以问题中的例子为例,当x = +5.1
and y = +3.0
最接近的整数值x/y (1.7)
is 2
. So n
is 2
。所以remainder
将产生x - 2y
即 5.1 - 2 * 3.0 即5.1 - 6.0
这是-0.9
.
但当x = -5.1
and y = +3.0
最接近的整数值x/y (-1.7)
is -2
. So n
is -2
。所以remainder
将产生x - 2y
这是-5.1 - (-2) * 3.0
这是-5.1 + 6.0
这是+0.9
该参考文献还指出:std::fmod()
,返回值为不保证具有相同的符号 as x
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)