Julia 有一个内置函数来四舍五入到 n 有效数字。 signif(0.0229, 2) 将四舍五入为两位有效数字并给出 0.023

如何将 n 有效数字切碎或截断,以便获得 0.022

最佳答案

嗯,不是很有想象力。使用 @edit signif(0.229,2) 查找源代码并将 round 替换为 floor(并添加了 Base. 以用于正确的模块引用)。结果如下:

function mysignif(x::Real, digits::Integer, base::Integer=10)
    digits < 1 && throw(DomainError(digits, "`digits` cannot be less than 1."))

    x = float(x)
    (x == 0 || !isfinite(x)) && return x
    og, e = Base._signif_og(x, digits, base)
    if e >= 0 # for numeric stability
        r = trunc(x/og)*og
    else
        r = trunc(x*og)/og
    end
    !isfinite(r) ? x : r
end

给予:
julia> mysignif(0.0229,2)
0.022

关于julia - 截断或截断为 n 个有效数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46289107/

10-15 04:04