Printf
Модуль Printf
предоставляет функции форматированного вывода, аналогичные функции printf
стандартной библиотеки C. Он позволяет форматированно выводить данные в поток вывода или в строку.
Printf.@printf
— Macro@printf([io::IO], "%Fmt", args...)
Печатает args
, используя строку спецификации формата в стиле C printf
. При желании, IO
может быть передан в качестве первого аргумента для перенаправления вывода.
Примеры
julia> @printf "Hello %s" "world"
Hello world
julia> @printf "Scientific notation %e" 1.234
Scientific notation 1.234000e+00
julia> @printf "Scientific notation three digits %.3e" 1.23456
Scientific notation three digits 1.235e+00
julia> @printf "Decimal two digits %.2f" 1.23456
Decimal two digits 1.23
julia> @printf "Padded to length 5 %5i" 123
Padded to length 5 123
julia> @printf "Padded with zeros to length 6 %06i" 123
Padded with zeros to length 6 000123
julia> @printf "Use shorter of decimal or scientific %g %g" 1.23 12300000.0
Use shorter of decimal or scientific 1.23 1.23e+07
julia> @printf "Use dynamic width and precision %*.*f" 10 2 0.12345
Use dynamic width and precision 0.12
Для систематической спецификации формата смотрите здесь. Также смотрите @sprintf
, чтобы получить результат в виде String
, а не печатать его.
Предостережения
Inf
и NaN
печатаются последовательно как Inf
и NaN
для флагов %a
, %A
, %e
, %E
, %f
, %F
, %g
и %G
. Более того, если число с плавающей запятой равно близко к числовым значениям двух возможных строк вывода, выбирается строка вывода, находящаяся дальше от нуля.
Примеры
julia> @printf("%f %F %f %F", Inf, Inf, NaN, NaN)
Inf Inf NaN NaN
julia> @printf "%.0f %.1f %f" 0.5 0.025 -0.0078125
0 0.0 -0.007812
Начиная с Julia 1.8, ширина %s
(строка) и %c
(символ) вычисляется с использованием textwidth
, который, например, игнорирует символы нулевой ширины (такие как комбинирующие символы для диакритических знаков) и рассматривает определенные "широкие" символы (например, эмодзи) как ширину 2
.
Динамические спецификаторы ширины, такие как %*s
и %0*.*f
, требуют Julia 1.10.
Printf.@sprintf
— Macro@sprintf("%Fmt", args...)
Возвращает @printf
отформатированный вывод в виде строки.
Примеры
julia> @sprintf "this is a %s %15.1f" "test" 34.567
"this is a test 34.6"
Printf.Format
— TypePrintf.Format(format_str)
Создайте объект формата, совместимый с C printf, который можно использовать для форматирования значений.
Входная строка format_str
может включать любой допустимый символ спецификатора формата и модификаторы.
Объект Format
можно передать в Printf.format(f::Format, args...)
, чтобы получить отформатированную строку, или Printf.format(io::IO, f::Format, args...)
, чтобы напрямую вывести отформатированную строку в io
.
Для удобства можно использовать строковый макрос Printf.format"..."
для создания объекта Printf.Format
во время расширения макроса.
Printf.Format
требует Julia 1.6 или более поздней версии.
Printf.format
— FunctionPrintf.format(f::Printf.Format, args...) => String
Printf.format(io::IO, f::Printf.Format, args...)
Примените объект формата f
к предоставленным args
и верните отформатированную строку (1-й метод) или напечатайте непосредственно в объект io
(2-й метод). См. @printf
для получения дополнительной информации о поддержке C printf
.