回 帖 发 新 帖 刷新版面

主题:关系表达式10*0.1=1的值为真为假?

为什么0.1*10=1的值为假,而10*1=10的值为真呢?谢谢!

回复列表 (共21个回复)

沙发

算术表达式0.1*10的值为双精度型
而1为整型
两个不同的类型怎么可能相等?
在1后面加#

0.1*10=1#
值为真

板凳

thank you!
为什么是双精度的而不是单精的

3 楼

一楼的不是正解……

10*0.1=1的值为真是肯定的。
但是,任何语言都会有精度误差
你可以运行一下:
cls
a#=10*0.1
print a#
看看结果,应该就会明白了吧。

4 楼

就是因为类型不同,所以表示的精确度不一样
a!=5*0.3
a#=5*0.3
print a!,a#
明显不一样
系统默认是双精度的
如果是同一类型,就算有误差,也会一样相等


5 楼

系统默认是单精度的.

6 楼

print 0.1*10=1#
结果是0

7 楼

原来试过可以的,现在不可以了
谁能反汇编就好了

8 楼

谁来说下,到底变成啥类型了?

9 楼

5楼的对的。

反汇编随便找个w32dasm什么的就可以吧。

10 楼

我认为QB在进行算式运算时,遇到立即数,就将其作为双精度数对待,这本来没什么错,但QB在引用双精度数时“忘了”清除这个双精度数后面的无效值,就产生了不该出现的误差。
---------------- 一家之见

我来回复

您尚未登录,请登录后再回复。点此登录或注册