【问题标题】:How to check if a is a number power of 2如何检查a是否是2的数幂
【发布时间】:2020-05-26 04:40:01
【问题描述】:

我想知道是否有一种有效的方法可以知道我的数据框中我的列的哪些值是否是 2 的幂。 我的数据是一个有 6 列的数据框,其中一列的值是我想要检查的值是否是 2 的幂。

class(df$doubling_times) > numeric

【问题讨论】:

    标签: r dataframe validation filter data-science


    【解决方案1】:

    log2(x) %% 1 == 0 - 检查数字的以 2 为底的对数是否为整数(除以 1 时,余数为 0?)

    > x = 1:10
    > data.frame(x, power2 = log2(x) %% 1 == 0)
        x power2
    1   1   TRUE
    2   2   TRUE
    3   3  FALSE
    4   4   TRUE
    5   5  FALSE
    6   6  FALSE
    7   7  FALSE
    8   8   TRUE
    9   9  FALSE
    10 10  FALSE
    

    上述方法应该可行,但更安全的方法会考虑浮点精度问题,可能是这样的:

    remainder = log2(x) %% 1
    tol = 1e-12 # tolerance
    power2 = abs(remainder - round(remainder)) < tol
    

    【讨论】:

    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多