为了在 C 中切换单精度和 double ,我们使用类似的东西:
#ifdef USE_DOUBLE
typedef double data_t;
#else
typedef float data_t;
#endif
是否有一种简单的方法来执行相同的操作,以便我可以在 VBA 中轻松地在两者之间切换?
最佳答案
在 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
如果 PRECISION = 1,则输出为 1.192093E-07
否则输出将是 1.19209289550781E-07
您可以通过添加类模块轻松地在 VBA 中修改上述代码。
关于performance - 在单精度和 double 之间轻松切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781647/