Julia 如果该值为正值,则打印一个额外的空格

Julia 如果该值为正值,则打印一个额外的空格,julia,Julia,我正在尝试获得程序的直观清晰的输出: a = -1234 b = 1234 @printf "a = %s%1.2e" "" a @printf "b = %s%1.2e" " " b 其中: a = 1.23e+03 b = -1.23e+03 (要点是为正数添加一个额外的空格) 现在我想把它自动化。我试着写一个函数: function negspace(x::Number) if x < 0 return "", x else

我正在尝试获得程序的直观清晰的输出:

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

a =  1.23e+03
b = -1.23e+03
(要点是为正数添加一个额外的空格)

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

function negspace(x::Number)
    if x < 0
        return "", x
    else
        return " ", x
    end
end
找到了一种方法:

#!/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))

但我不确定它是否是最佳的。

更简单的方法是直接使用,在
%
后面加一个空格:

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

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

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