2016-05-04 11 views
5

In Python 3, vorreiCome si formatta una stringa quando interpolata in Julia?

print_me = "Look at this significant figure formatted number: {:.2f}!".format(floating_point_number) 
print(print_me) 

In Julia

print_me = "Look at this significant figure formatted number: $floating_point_number" 
print(print_me) 

ma questo produrrebbe dire

Look at this significant figure formatted number: 61.61616161616161 

Come faccio ad avere Julia per limitare il numero di cifre decimali visualizza ? Si noti che la memoria necessaria per la stringa da stampare, a mia conoscenza, esclude l'utilizzo della macro @printf.

Questo funziona, ma non sembra stilisticamente corretto.

floating_point_number = round(floating_point_number,2) 
print_me = "Look at this significant figure formatted number: $floating_point_number" 
print(print_me) 

risposta

11

È possibile utilizzare la macro @sprintf. Ciò restituisce una stringa anziché stamparla come @printf.

x = 1.77715 
print("I'm long: $x, but I'm alright: $(@sprintf("%.2f", x))") 

uscita:

I'm long: 1.77715, but I'm alright: 1.78 
4

Oltre a @ di niczky12 risposta è anche possibile utilizzare il pacchetto Formatting progettata proprio per questo tipo di cose!

Pkg.add("Formatting") 
using Formatting: printfmt 
x = 1.77715 
printfmt("I'm long: $x, but I'm alright: {:.2f}", x) 

uscita:

I'm long: 1.77715, but I'm alright: 1.78 
2

Mentre è ancora un work in progress (ho bisogno di aggiungere un po 'di test di unità, e voglio aggiungere una modalità di Python 3.6 style), si potrebbe anche usa il mio pacchetto StringUtils.jl, che aggiunge la formattazione C e Python, l'interpolazione stile Swift, Emoji, LaTex e Html e i caratteri con nome Unicode ai letterali stringa.

Pkg.clone("https://github.com/ScottPJones/StringUtils.jl") 
Pkg.checkout("StringUtils") 

using StringUtils 

x = 1.77715 
print(u"I'm long: \(x), but I'm alright: \%.2f(x)") 

uscita:

I'm long: 1.77715, but I'm alright: 1.78 
Problemi correlati