Math 修复由于舍入而导致的不准确数学结果

Math 修复由于舍入而导致的不准确数学结果,math,vbscript,Math,Vbscript,尝试在.VBS文件中运行此操作 MsgBox(545.14-544.94) 你会得到一个简洁的答案0.199999999932 不幸的是,这种舍入问题也出现在Sin(2*pi)中,因为VB只能看到(用户定义的)变量pi精确到3.14159265358979 手动四舍五入(并降低精度)是改善结果的唯一方法吗?处理这类问题最有效的方法是什么?这就是浮点数的工作方式,小的误差是可以预料的。要获得更好的输出,最简单的方法是将结果四舍五入到更少的数字。。vbs文件是VBSCRIPT,而不是VB6。浮点算

尝试在.VBS文件中运行此操作

MsgBox(545.14-544.94)
你会得到一个简洁的答案
0.199999999932

不幸的是,这种舍入问题也出现在Sin(2*pi)中,因为VB只能看到(用户定义的)变量pi精确到3.14159265358979


手动四舍五入(并降低精度)是改善结果的唯一方法吗?处理这类问题最有效的方法是什么?

这就是浮点数的工作方式,小的误差是可以预料的。要获得更好的输出,最简单的方法是将结果四舍五入到更少的数字。

。vbs文件是VBSCRIPT,而不是VB6。浮点算法已经讨论了很多:谢谢john,你说得对,但VB6中也会出现这种情况。我发现这是一个真正的问题,特别是当你编写循环并出错时。奇怪的是,在VBScript中,您无法选择数据类型,更糟糕的是,解释器强制使用“错误”类型。@JayWick,您最终做了什么来解决这个悲惨的问题?你认为像JS或Python这样的脚本语言也有吗?+1这里解释得很好(有点开玩笑,但解释得很好)。上面评论的链接是: