| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2933 人关注过本帖
标题:高手请进,关于Currency不进入循环的问题
只看楼主 加入收藏
沉默的痞子
Rank: 4
等 级:贵宾
威 望:12
帖 子:96
专家分:127
注 册:2015-10-7
结帖率:45%
收藏
已结贴  问题点数:20 回复次数:11 
高手请进,关于Currency不进入循环的问题
上代码:
程序代码:
dim i as Currency,dim j as Currency
for i=2 to 400000
j=j+1
next
print j
end sub

这里i根本不进入循环,为什么? 如果是 2 to 600000就可以
i定义成long是可以的

[此贴子已经被作者于2016-12-13 15:26编辑过]

搜索更多相关主题的帖子: color 
2016-12-13 15:23
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:5 
类型错了 dim i as long
2016-12-13 17:26
沉默的痞子
Rank: 4
等 级:贵宾
威 望:12
帖 子:96
专家分:127
注 册:2015-10-7
收藏
得分:0 
回复 2楼 w360989426
Currency 理论上也是可以的啊,它的范围比long还大
2016-12-14 08:50
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:5 
我记得有一句话,但忘了是哪里说的
 Currency 是一种特殊的类型,定点小数。可能就是这个原因导致它不属于基本数据类型。

可能还有一个原因是,Currency 是 64位的,而VB6编译出来的程序是 32位的,造成 Currency 无法装入一个寄存器,而导致它不属于基本数据类型。
32位的应用,使用的寄存器,是 32位/16位/8位 三种。

不是基本数据类型,是肯定无法当做循环变量 ,如 数组元素 。

------------
数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些
低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄
存器都有自己的名称,可独立存取。

授人于鱼,不如授人于渔
早已停用QQ了
2016-12-14 10:12
沉默的痞子
Rank: 4
等 级:贵宾
威 望:12
帖 子:96
专家分:127
注 册:2015-10-7
收藏
得分:0 
回复 4楼 风吹过b
但是为什么只有40万左右会这样,50万就不会呢
2016-12-14 11:04
沉默的痞子
Rank: 4
等 级:贵宾
威 望:12
帖 子:96
专家分:127
注 册:2015-10-7
收藏
得分:0 
回复 4楼 风吹过b
但是为什么只有40万左右会这样,50万就不会呢
2016-12-14 11:04
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
这个真是搞不懂。
很少用 Currency 数据类型,可能与内部数据处理过程有关。
二个LONG 的范围,然后又是 定点小数 。

授人于鱼,不如授人于渔
早已停用QQ了
2016-12-14 12:20
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:5 
回复 3楼 沉默的痞子
Currency 数据类型是货币数据,而循环变量的数据必须是基本的数值数据,因此循环时程序不会识别货币这个数据,当然不会进行循环的。
基本的数值数据类型是:Byte-字节型、 Integer-整形、 Long-长整形。Single-单精度、Double-双精度 数据是实数数据,实数数据也可以作为循环变量,但一般循环使用长整形数据已经足够了,因此很少使用实数数据。
Currency 数据类型是货币数据,它主要用于表示货币的值,它与数值数据不一样,只能识别货币,而识别不了数值。

请不要选我!!!
2016-12-16 12:26
沉默的痞子
Rank: 4
等 级:贵宾
威 望:12
帖 子:96
专家分:127
注 册:2015-10-7
收藏
得分:0 
回复 8楼 ZHRXJR
是货币型啊,我以为也是表示整数的
2016-12-16 13:14
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:5 
经验证:
1,for循环使用货币性变量作为循环变量,只要差值不超过214748即可运行,及For i = 0@ To 214748@可以,For i = 0@ To 214749@即失败
2,货币性数值自加不同于整形数自加,如For i = 0@ To 214748@,最后i的值是429497
3,出现这种情况应该与货币型数据的表示特性有关,货币型数据属于定点数,自加时当做普通型数据自加出错了
4,避免使用货币型数据作为循环变量
2016-12-16 17:30
快速回复:高手请进,关于Currency不进入循环的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023702 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved