performance - 在单精度和 double 之间轻松切换

标签 performance vba excel precision

为了在 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/

相关文章:

php - php 调用的 mysql 性能

c - 为什么这个 NodeJS 比原生 C 快 2 倍?

c# - 为什么 c# 编译器在使用具有 new() 约束的泛型类型调用 new 时发出 Activator.CreateInstance?

vba - 使用 Excel 宏中的 Word Selection 对象

vba - 将数据从一个电子表格复制到另一个

excel - 为什么 .autoFill 会导致 Excel 崩溃?

arrays - 在VBA中动态追加数组

iphone - 如何避免在 Core Graphics 中调用 png_read_filter_row 和 transform_premul_argb_fn?

excel - 将 find LastRow 代码转换为函数

python - 使用python在xlsxwriter中输出超过26列