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

Vb.net和C的MATH函数中任何已知的歧义,第1张

概述最近我发现C fmod函数的结果和它在Vb.net中的等效Math.IEEERemainder存在模糊性 如果我们在C中计算fmod(4.1887902053333335 / 6.283185307,1.0),我们得到, 0.6666666677277而Vb.net中的Math.IEEERemainder(4.1887902053333335 / 6.283185307,1.0)导致-0.3333 最近我发现C fmod函数的结果和它在Vb.net中的等效Math.IEEERemainder存在模糊性

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

我目前正在开发一个项目,它有几个数学运算,包括正弦,双曲余弦,模数等,最初是在C中,我的任务是在Vb.net中转换它.

虽然大多数代码可以简单地在网络上进出在线转换器,但这些数学模糊性仍然隐藏着损害结果.

有没有人知道这种已知的差异,特别是对于C的Vb.net中的Math类?

解决方法 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)

所以,它只是一个不同的功能.

总结

以上是内存溢出为你收集整理的Vb.net和C的MATH函数中任何已知的歧义全部内容,希望文章能够帮你解决Vb.net和C的MATH函数中任何已知的歧义所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1229548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存