Jula REPL数字格式

时间:2014-07-04 20:13:20

标签: julia

在MatLab / Octave中,您可以发送命令“format long g”并在REPL中具有默认数字输出,格式如下:

  

八度> 95000 / 0.05

     

ans = 1900000

是否有可能在朱莉娅中获得类似的行为?目前与朱莉娅

  

版本0.3.0-prerelease + 3930(2014-06-28 17:54 UTC)

     

提交bdbab62 *(6天大师)

     

x86_64的-红帽Linux的

我得到以下数字格式。

  

朱莉娅> 95000 / 0.05

     

1.9e6

1 个答案:

答案 0 :(得分:4)

您可以使用 @printf 宏进行格式化。它的行为类似于C printf,但与C的printf不同,类型不需要同意,而是根据需要进行转换。例如

julia> @printf("Integer Format: %d",95000/0.05);
Integer Format: 1900000

julia> @printf("As a String: %s",95000/0.05);
As a String: 1.9e6

julia> @printf("As a float with column sized larger than needed:%11.2f",95000/0.05);
As a float with column sized larger than needed: 1900000.00

可以使用 @printf 作为REPL中的默认机制,因为REPL在Base.REPL中的Julia中实现,特别是以下函数:

function display(d::REPLDisplay, ::MIME"text/plain", x)
    io = outstream(d.repl)
    write(io, answer_color(d.repl))
    writemime(io, MIME("text/plain"), x)
    println(io)
end

要修改显示 Float64 的方式,您只需要为 Float64 重新定义 writemime

julia> 95000/0.05
1.9e6

julia> Base.Multimedia.writemime(stream,::MIME"text/plain",x::Float64)=@printf("%1.2f",x)
writemime (generic function with 13 methods)

julia> 95000/0.05
1900000.00