vba 编程学习中遇到的问题!
下面是程序:我主要是怎么也想不到为什么程序运行结果是下面给出的结果:subDoubleVsDecimal()Dimdbxasdoubledimdbyasvariantdi...
下面是程序:我主要是怎么也想不到为什么程序运行结果是下面给出的结果:
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
这段程序是我从一个电子书上看到了,实在是理解不了,大家给解释下,运行过程我都能看懂,就是不知道结果为什么是这个,肯定跟它的变量类型有关系。希望大家解释下! 展开
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询