Как вы форматируете строку при интерполяции в Julia?
в Python 3, я бы
print_me = "Look at this significant figure formatted number: {:.2f}!".format(floating_point_number)
print(print_me)
или
print_me = f"Look at this significant figure formatted number: {floating_point_number:.2f}!"
print(print_me)
Джулия
print_me = "Look at this significant figure formatted number: $floating_point_number"
print(print_me)
но это дало бы сказать
Look at this significant figure formatted number: 61.61616161616161
как заставить Джулию ограничить количество десятичных знаков, которые она отображает? Обратите внимание, что необходимое хранение строки для печати, насколько мне известно, исключает использование @printf
макрос.
это работает, но не кажется стилистически правильно.
floating_point_number = round(floating_point_number,2)
print_me = "Look at this significant figure formatted number: $floating_point_number"
print(print_me)
3 ответов
можно использовать @sprintf
макрос из стандартного пакета библиотека Printf
. Это возвращает строку, а не просто печатает ее как @printf
.
using Printf
x = 1.77715
print("I'm long: $x, but I'm alright: $(@sprintf("%.2f", x))")
выход:
I'm long: 1.77715, but I'm alright: 1.78
в дополнение к ответу @niczky12 вы также можете использовать форматирование пакет предназначен именно для этого типа вещей!
Pkg.add("Formatting")
using Formatting: printfmt
x = 1.77715
printfmt("I'm long: $x, but I'm alright: {:.2f}", x)
выход:
I'm long: 1.77715, but I'm alright: 1.78
пока он все еще работает (мне нужно добавить кучу модульных тестов, и я хочу добавить режим стиля Python 3.6), вы также можете использовать my StringUtils.jl пакет, который добавляет C и Python, такие как форматирование, интерполяция Swift style, Emoji, LaTex и HTML и Unicode именованные символы в строковые литералы.
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)")
выход:
I'm long: 1.77715, but I'm alright: 1.78