VB计算结果不精确,怎么处理?
Dim num1 As Double '第一个操作数 Dim num2 As Double '第二个操作数 Dim result As Double '表示运算结果 我如果计算1000-1001.8,结果会显示成-1. 77795 而result定义成single,currency则不会出现这个问题,但是single计算的结果太少,只要是上千万的结果,就会转换成科学计数法,而currency则小数点后面只保留4位小数,也不可行,有朋友碰上过这种问题吗?帮下忙吧,急啊~~
当然遇到过,不光是VB,所有的语言都有这个问题,因为在电脑中没有绝对精确的数字,如果它是浮点型的就会有很多的小球位,这是由于电脑为了保证尽量精确造成的,您可以使用round或format函数来规范结果,这样生成的结果可以四舍五入,另外我还想起一个方法,但是不知道是否可行,因为是刚想出来的,所以没有检验,这个方法就是:在窗体上托两个控件用来存储两个数,最后的结果等于text1.text减去text2.text,估计这个方法可行~回答完毕,祝您好运。
float型为16位,但最后一位为不精确位,所以无法显示准确的值
你可以看一下参考资料链接的文章"浮点数精确运算的分析和解决办法",说明的产生这种问题的原因并提供了解决办法.
答:原因: 1.电脑是以2进制存储数据,会出现误差 2.有些十进制小数在浮点数中没有正确的表示。 建议制定小数位数,例如 format(num,"###0.000"...详情>>