Performance 在单精度和双精度之间轻松切换
在C语言中,要在单精度和双精度之间切换,我们使用如下命令:Performance 在单精度和双精度之间轻松切换,performance,vba,excel,precision,Performance,Vba,Excel,Precision,在C语言中,要在单精度和双精度之间切换,我们使用如下命令: #ifdef USE_DOUBLE typedef double data_t; #else typedef float data_t; #endif 是否有一种简单的方法来执行相同的操作,以便我可以在VBA中轻松地在两者之间切换?这在VBA中的效果几乎相同: #Const USE_DOUBLE = False #If USE_DOUBLE Then Public data As Integer #Else Publ
#ifdef USE_DOUBLE
typedef double data_t;
#else
typedef float data_t;
#endif
是否有一种简单的方法来执行相同的操作,以便我可以在VBA中轻松地在两者之间切换?这在VBA中的效果几乎相同:
#Const USE_DOUBLE = False
#If USE_DOUBLE Then
Public data As Integer
#Else
Public data As Double
#End If
#
代表条件编译。在VBS中,用户定义的类型被抽象为类。例如
Public Const PRECISION = 1
Class data_t
Private dValue
Private Sub Class_Initialize
dValue = 0
End Sub
Public Property Get Value 'inside out
Value = dValue
End Property
Public Property Let Value(val) 'outside in
If PRECISION = 1 Then
dValue = CSng(val)
Else
dValue = CDbl(val)
End If
End Property
End Class
Set obj = New data_t
obj.Value = 0.00000011920928955078125
Msgbox obj.Value
如果精度=1,则输出为1.192093E-07
否则,输出将为1.19209289550781E-07
通过添加一个类模块,您可以轻松地在VBA中修改上述代码。这并不完全相同,使用此代码,我必须在每个变量上设置此条件,而在C中,我在类型声明上设置了一次条件,并将变量声明为“数据”类型。哦,是的,我误解了您的代码。但是,这仍然是在VBA中工作的唯一方法…这是一个很好的解决方案,但它在性能方面是否有效?它与创建/使用任何对象一样高效(或低效)。