gpt4 book ai didi

c++ - Vb.net 和 C++ 的 MATH 函数中任何已知的歧义

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:47 25 4
gpt4 key购买 nike

最近我发现 C++ fmod 函数及其在 Vb.net 中的等效 Math.IEEERemainder 的结果存在歧义

如果我们在 C++ 中计算 fmod(4.1887902053333335/6.283185307, 1.0) 我们得到,0.6666666677277 而 Math.IEEERemainder(4.1887902053333335/6.283185307, 1.0) 在 Vb.net 中结果为 -0.33333333322723 因此我们发现结果完全不同会严​​重影响输出。

我目前正在从事一个项目,该项目有几个数学运算,包括正弦、双曲余弦、模数等。它最初是用 C++ 编写的,我的任务是在 Vb.net 中转换它。

虽然大部分代码都可以简单地从 Web 上的在线转换器中拉入和拉出,但这些数学上的歧义仍然隐藏起来,会破坏结果。

这里有没有人知道这种已知的差异,尤其是 Vb.net 中的 Math 类与 C++ 的差异?

最佳答案

doc on Math.IEEERemainder说如下:

The IEEERemainder method is not the same as the modulus operator. Although both return the remainder after division, the formulas they use are different. The formula for the IEEERemainder method is:

IEEERemainder = dividend - (divisor * Math.Round(dividend / divisor))

In contrast, the formula for the modulus operator is:

Modulus = (Math.Abs(dividend) - (Math.Abs(divisor) * (Math.Floor(Math.Abs(dividend) / Math.Abs(divisor))))) * Math.Sign(dividend)

所以,这只是一个不同的功能。

关于c++ - Vb.net 和 C++ 的 MATH 函数中任何已知的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25730859/

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