如果值为正,则打印额外的 space

Print an extra space if the value is positive

我正在尝试让我的程序输出清晰可见:

a = -1234
b =  1234
@printf "a = %s%1.2e" ""  a
@printf "b = %s%1.2e" " " b

给出:

a =  1.23e+03
b = -1.23e+03

(重点是正数多加一个space)

现在我想自动化它。我试着写了一个函数:

function negspace(x::Number)
    if x < 0
        return "", x
    else
        return " ", x
    end
end

并打印

a = -1234
b =  1234
@printf "a = %s%1.2e" negspace( a )
@printf "b = %s%1.2e" negspace( b )

找到方法:

#!/usr/bin/env julia

function signspace(x::Number)
    if x > 0
        return @sprintf(" %1.2e", x)
    else
        return @sprintf( "%1.2e", x)
    end
end

a = -1234
b =  1234

println("a = ", signspace(a))
println("b = ", signspace(b))

但我不确定它是否最佳。

更简单的是使用 printf format flag 直接在 %:

后面加上 space
julia> @sprintf("a = % 1.2e", -1234)
"a = -1.23e+03"

julia> @sprintf("b = % 1.2e", 1234)
"b =  1.23e+03"