vba 编程学习中遇到的问题!

来源:百度知道 编辑:UC知道 时间:2024/04/29 09:00:30
下面是程序:我主要是怎么也想不到为什么程序运行结果是下面给出的结果:
sub DoubleVsDecimal()
Dim dbx as double
dim dby as variant
dim count as long
for count=1 to 100000
dbx=dbx+1
dby=dby+Cdec(0.00001)
net
debug.print"result in double:"&dbx
debug.print"result in decimal:"&dby
end sub
程序运行结果:
result in double:0.999999999998084
result in decimal:1
这段程序是我从一个电子书上看到了,实在是理解不了,大家给解释下,运行过程我都能看懂,就是不知道结果为什么是这个,肯定跟它的变量类型有关系。希望大家解释下!

该示例主要演示了Decimal和Double 数据类型的区别。CDec函数是将数值转换为Decimal类型。

Decimal 变量存储为 96 位(12 个字节)带符号的整型形式,并除以一个 10 的幂数。这个变比因子决定了小数点右面的数字位数,其范围从 0 到 28。变比因子为 0(没有小数位)的情形下,最大的可能值为 +/-79,228,162,514,264,337,593,543,950,335。而在有 28 个小数位的情况下,最大值为 +/-7.9228162514264337593543950335,而最小的非零值为 +/-0.0000000000000000000000000001。

注意 此时,Decimal 数据类型只能在 Variant中使用,也就是说,不能声明一变量为 Decimal 的类型。不过可用 Cdec 函数,创建一个子类型为 Decimal 的 Variant。

Double
(双精度浮点型) 8 个字节 负数时从 -1.79769313486231E308 到
-4.94065645841247E-324;正数时从4.94065645841247E-324 到 1.79769313486232E308