首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB单精度型运算的有关问题

2012-03-09 
VB单精度型运算的问题我定义了3个单精度(Single)变量a,b,ca1b0.001ca/b这个c本来应该等于1000,但算出来

VB单精度型运算的问题
我定义了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


[解决办法]
用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

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

VB code
Option ExplicitPrivate Sub Command1_Click()    Dim a As Integer    Dim b As Double    a = 1    b = 0.0001    Debug.Print a / bEnd Sub 

热点排行