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

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

主站蜘蛛池模板: 当涂县| 连江县| 庆阳市| 勃利县| 永川市| 盖州市| 淅川县| 鹤庆县| 尼玛县| 丰镇市| 鞍山市| 泰州市| 淮北市| 大新县| 龙里县| 普定县| 九寨沟县| 墨江| 临夏市| 琼结县| 崇左市| 马山县| 嵊泗县| 兰西县| 阳城县| 旬邑县| 县级市| 石河子市| 留坝县| 曲靖市| 濮阳县| 榆社县| 永胜县| 潜江市| 通州区| 纳雍县| 石楼县| 中方县| 辽中县| 东乡族自治县| 深州市|