Excel 将变量声明为十进制
我正在VBA中优化一个宏,该宏没有声明任何数据类型,因此编译器笨拙地将所有内容都视为变量。我在处理科学测量,所以我需要精确性Excel 将变量声明为十进制,excel,vba,excel-2007,Excel,Vba,Excel 2007,我正在VBA中优化一个宏,该宏没有声明任何数据类型,因此编译器笨拙地将所有内容都视为变量。我在处理科学测量,所以我需要精确性 如何将Dim decAsdf声明为Decimal(不是那样,而是正确的方法)?您不能将变量声明为Decimal-您必须使用Variant(您可以使用CDec来填充Decimal类型)。数据类型Single使用4个字节,范围为-3.402823E38到1.401298E45双字节使用8个字节 您可以声明如下: Dim decAsdf as Single 或 下面是一个示例
如何将Dim decAsdf声明为Decimal(不是那样,而是正确的方法)?您不能将变量声明为Decimal-您必须使用
Variant
(您可以使用CDec
来填充Decimal
类型)。数据类型Single
使用4个字节,范围为-3.402823E38到1.401298E45<代码>双字节使用8个字节
您可以声明如下:
Dim decAsdf as Single
或
下面是一个示例,其中显示一个消息框,其中包含计算后的变量值。你所要做的就是把它放在一个模块中并运行它
Sub doubleDataTypeExample()
Dim doubleTest As Double
doubleTest = 0.0000045 * 0.005 * 0.01
MsgBox "doubleTest = " & doubleTest
End Sub
要将变量声明为
十进制
,请首先将其声明为变量
,然后使用CDec
转换为十进制
。监视窗口中的类型应为Variant/Decimal
:
,应尽可能转换为十进制,以避免常见的陷阱
在下面的示例中,我们看到表达式:
0.1+0.11=0.21
是True
还是False
,取决于收藏品(0.1,0.11)是声明为Double
还是声明为Decimal
:
Public Sub TestMe()
Dim preciseA As Variant: preciseA = CDec(0.1)
Dim preciseB As Variant: preciseB = CDec(0.11)
Dim notPreciseA As Double: notPreciseA = 0.1
Dim notPreciseB As Double: notPreciseB = 0.11
Debug.Print preciseA + preciseB
Debug.Print preciseA + preciseB = 0.21 'True
Debug.Print notPreciseA + notPreciseB
Debug.Print notPreciseA + notPreciseB = 0.21 'False
End Sub
例如:
Dim v:v=CDec(“123456789.123456789”)
那么每个小数点都在不同的行上声明了吗?我不知道你的意思。声明为Dim
,与任何其他变量类型没有区别。这是否是一个正确的示例:Dim DeceanComp:DeceanComp=CDec(“1234”)是。只是澄清一下——声明和赋值不必在同一行,我只是不能在注释中发布单独的代码行!
Public Sub TestMe()
Dim preciseA As Variant: preciseA = CDec(0.1)
Dim preciseB As Variant: preciseB = CDec(0.11)
Dim notPreciseA As Double: notPreciseA = 0.1
Dim notPreciseB As Double: notPreciseB = 0.11
Debug.Print preciseA + preciseB
Debug.Print preciseA + preciseB = 0.21 'True
Debug.Print notPreciseA + notPreciseB
Debug.Print notPreciseA + notPreciseB = 0.21 'False
End Sub