官术网_书友最值得收藏!

Formatting numbers and strings

The @printf macro from the Printf package (we'll look deeper into macros in Chapter 7, Metaprogramming in Julia) takes a format string and one or more variables to substitute into this string while being formatted. It works in a manner similar to printf in C. You can write a format string that includes placeholders for variables, for example, as follows:

julia> name = "Pascal" 
julia> using Printf 
julia> @printf("Hello, %s \n", name) # returns Hello, Pascal 

Because @printf now lives in another package, you have to do this using Printf first (prior to 1.0, it belonged to Base).

If you need a string as the return value, use the macro @sprintf.

The following formatting.jl script shows the most common formats:

using Printf 
# d for integers: 
@printf("%d\n", 1e5) #> 100000 
x = 7.35679 
# f = float format, rounded if needed: 
@printf("x = %0.3f\n", x) #> 7.357 
aa = 1.5231071779744345 
bb = 33.976886930000695 
@printf("%.2f %.2f\n", aa, bb) #> 1.52 33.98 
# or to create another string: 
str = @sprintf("%0.3f", x) 
show(str) #> "7.357" 
println() 
# e = scientific format with e: 
@printf("%0.6e\n", x) #> 7.356790e+00 
# c = for characters: 
@printf("output: %c\n", 'α') #> output: α 
# s for strings: 
@printf("%s\n", "I like Julia") 
# right justify: 
@printf("%50s\n", "text right justified!") 
# p for pointers: 
@printf("a pointer: %p\n", 1e10) #> a pointer: 0x00000002540be400 
 

The following output is obtained upon running the preceding script:

100000 
x = 7.357 
1.52 33.98 
"7.357" 
7.356790e+00 
output: α 
I like Julia 
                   text right justified! 
a pointer: 0x00000002540be400 

A special kind of string is VersionNumber, which the form v"0.3.0" (note the preceding v), with optional additional details. They can be compared, and are used for Julia's versions, but also in the package versions and dependency mechanism of Pkg (refer to the Packages section of Chapter 1, Installing the Julia Platform). If you have the code that works differently for different versions, use something as follows:

if v"0.5" <= VERSION < v"0.6-" 
# do something specific to 0.5 release series 
end

主站蜘蛛池模板: 海林市| 新民市| 平阳县| 雷波县| 华阴市| 西吉县| 隆昌县| 长宁区| 宣威市| 肥城市| 沭阳县| 潼关县| 观塘区| 汉中市| 获嘉县| 汉中市| 江达县| 高青县| 昌平区| 太康县| 友谊县| 沙洋县| 宁城县| 鹿邑县| 营口市| 石门县| 饶阳县| 黔西| 南平市| 无棣县| 天等县| 松溪县| 宁德市| 东乡县| 西华县| 清新县| 黔西| 正定县| 宁晋县| 桃园县| 富宁县|