VB运行中变量到5这个位置就丢失变量,这是为什么?

来源:百度知道 编辑:UC知道 时间:2024/07/05 05:10:44
程序如下:

Dim zuigaogaodu As Single

Dim a() As Single
Dim b() As Single

zuigaogaodu = Adodc1.Recordset.Fields("液位仪实时高度").Value

ReDim a(0.1 To zuigaogaodu) As Single
ReDim b(0.1 To zuigaogaodu) As Single

中间计算a(i)的过程省略

Dim k As Single

k = 0.1

Do While (k <= zuigaogaodu)

Dim u As Integer

u = Round(k * 10, 0)

k = u / 10

b(k) = b(k - 0.1) + a(k)

Debug.Print k, a(k), b(k)

k = k + 0.1

Loop

得到的即时数据如下:

.1 .4962779 .4962779
.2 .4962779 .9925559
.3 .4962779 1.488834
.4 .4962779 1.985112
.5 .4962779 2.48139
.6 .4962779 .4962779 注意此行
.7 .4962779 .9925559
.8 .4962779

你用的VB应该不是VB6,数组的定义和VB6不一样,所以也说不明白有什么不同,不过你可以考虑从以下两个方面改一下试试:
1、不用Round函数,因为有的时候VB中的四舍五入很奇怪,和我们认为的四舍五入不一样。
2、定义数组时改成传统的以整型数定义上下界的,这样处理数据时也许会麻烦一点,但应该会减少有这种莫名其妙的错误。

用Currency类型即可
Dim k As Currency

另以下代码多余
Dim u As Integer
u = Round(k * 10, 0)
k = u / 10

楼上说的很好 定义数组应该用整型
至少你也不要用浮点型
VB中的四舍五入(其实所有的编程语言里)
大都是用的西方的叫四舍六入五成双的方法
虽然很科学但不适合中国“国情”
没办法这些软件都不是中国人编的