gpt4 book ai didi

c++ - remquo 结果没有意义

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:58 25 4
gpt4 key购买 nike

我读了here remquo 应该返回:

If successful, returns the floating-point remainder of the division x/y as defined in std::remainder, and a value whose sign is the sign of x/y and whose magnitude is congruent modulo 2n to the magnitude of the integral quotient of x/y, where n is an implementation-defined integer greater than or equal to 3.

很明显,我误解了所有技术术语,因为我认为我要取回除法的小数结果。而是这个操作:

int quot;
const float rem = remquo(7.0F, 4.0F, &quot);

quot 设置为 2 并将 rem 设置为 -1.0!我可以看出这是如何有效的,因为 4.0 * 2 = 8.07.0 - 8.0 = -1.0。但为什么我们要使用会导致负值 remquot?我不应该取回 quot1rem3.0 吗?

最佳答案

因为你的问题是关于 remquo 返回的值,它完全是关于 std::remainder,因为 remquo 的那部分' s 的行为直接定义为与 std::remainder 的行为相同。

std::remainder 提供IEEE 754 余数运算,与fmod 不同的是两个正值的fmod 可以是预期始终为正,而 IEEE 754 余数是相对于整数商 q 定义为数学商 x/y 的最近整数,因此 remainder = x - y*q 每次数学商向上舍入到下一个整数时都会产生负结果。

IEEE 754 余数运算是 question “Math.IEEERemainder returns negative results.” 中讨论的运算。所以你可能想阅读它和接受的答案,尽管它们是关于不同的编程语言的。

注意:关于商的规范部分是“与积分商的大小一致模 2n”只是意味着您没有得到整个积分商,这确实可能不是适合 int 类型(想想 remquo(FLT_MAX, 1.0f, ...)。相反,您会得到实现定义的积分最低有效位的数量商。您获得的实现定义的位数必须至少为三,但可以更多。

关于c++ - remquo 结果没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com