如果我们在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函数中任何已知的歧义所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)