之间轻松切换到C单精度和双精度之间切换,我们使用这样的:单精度和双精度
#ifdef USE_DOUBLE
typedef double data_t;
#else
typedef float data_t;
#endif
是否有执行同样的事情,这样我可以在两者之间轻松切换的简单方法在VBA中?
之间轻松切换到C单精度和双精度之间切换,我们使用这样的:单精度和双精度
#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
如果精度= 1,输出将是1.192093E-07
否则输出将为1.19209289550781E-07
可以很容易地修改在VBA上面的代码通过添加类模块。
这在VBA工作几乎相同:
#Const USE_DOUBLE = False
#If USE_DOUBLE Then
Public data As Integer
#Else
Public data As Double
#End If
的#
代表条件编译。
这不完全相同,使用此代码我将不得不把这个条件放在每个变量上,而在CI中把条件放在类型声明上,并声明变量类型为“data” –
哦,是的,我误解了你的码。但是,这仍然是在VBA中工作的唯一方法... – Manu
这是一个很好的解决方案,但是它的性能表现是否有效? –
它与创建/使用任何对象一样高效(或低效)。 –