+ -
当前位置:首页 → 问答吧 → VB单精度型运算的问题

VB单精度型运算的问题

时间:2011-09-02

来源:互联网

我定义了3个单精度(Single)变量a,b,c
a=1
b=0.001
c=a/b
这个c本来应该等于1000,但算出来却是999.9999,这是怎么回事?如何解决?谢谢!

但如果
b=0.1,则c=10
b=0.01,则c=100
b=0.0001,则c=10000
唯独当b=0.001的时候,c不等于1000,而是等于999.9999

作者: yeosn   发布时间: 2011-09-02

用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。

Dim a As Single
Dim b As Single
Dim c As Single

a = 1
b = 0.001
c = a / b
Debug.Print c '999.9999
Debug.Print Format(c, "#") '1000

作者: zhao4zhong1   发布时间: 2011-09-02

因为b=0.001保存不准确(2进制保存小数的固有问题,事实上是个近似数)所以,你运算后,是个近似数,很正常

作者: worldy   发布时间: 2011-09-02

热门下载

更多