VB单精度型运算的有关问题
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进制保存小数的固有问题,事实上是个近似数)所以,你运算后,是个近似数,很正常
------解决方案--------------------
我定义了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 Explicit Private Sub Command1_Click() Dim a As Integer Dim b As Double a = 1 b = 0.0001 Debug.Print a / b End Sub