Excel 单变量类型数组给出转录错误?

Excel 单变量类型数组给出转录错误?,excel,vba,variables,Excel,Vba,Variables,我声明了一个大小为100的数组,并在其中存储了大约6个值。然后我将它们转移到另一个Excel工作簿中。然而,当他们被转移时,他们被赋予了超过最后一个小数点的额外数字 例如:1.1,当存储然后传输时,给出的值为1.10000002384185 我把数组类型改成了double,它修复了它,但我只是好奇到底发生了什么 Dim Program_LC_Array(100) As Single Dim y As Long Dim x As Long With Workbooks("Workbook1").

我声明了一个大小为100的数组,并在其中存储了大约6个值。然后我将它们转移到另一个Excel工作簿中。然而,当他们被转移时,他们被赋予了超过最后一个小数点的额外数字

例如:1.1,当存储然后传输时,给出的值为1.10000002384185

我把数组类型改成了double,它修复了它,但我只是好奇到底发生了什么

Dim Program_LC_Array(100) As Single
Dim y As Long
Dim x As Long

With Workbooks("Workbook1").Sheets("Program")
For x = 2 To 7
    Program_LC_Array(y) = .Range("M" & x).Value
    y = y + 1
Next x
y = y - 1
End With

With Workbooks("Workbook2").Sheets("Destination")
For x = 0 To y
    .Range("A" & x).Value = Program_LC_Array(x)
Next x
End With


我们怎么知道发生了什么?我们无法查看数据或函数
Program\u LC\u Array()
。也许这只是电子表格本身的格式问题。也许这是旁注的另一个例子——这里不需要数组。您可以将值从一个范围传递到另一个范围(尽管我猜您知道这一点)。出于几个原因,它需要是一个数组。我认为前面提到的浮点数学就是问题所在。我只是好奇。当您更改为
double
时,值实际上是
1.10
,而不是
1.1
,但由于最后一个数字是零,我假设您的excel格式会删除任何尾随的零。我们如何知道发生了什么?我们无法查看数据或函数
Program\u LC\u Array()
。也许这只是电子表格本身的格式问题。也许这是旁注的另一个例子——这里不需要数组。您可以将值从一个范围传递到另一个范围(尽管我猜您知道这一点)。出于几个原因,它需要是一个数组。我认为前面提到的浮点数学就是问题所在。我只是好奇。当您更改为
double
时,值实际上是
1.10
,而不是
1.1
,但由于最后一个数字是零,我假设您的excel格式会删除任何尾随的零。。