從標準輸入讀取數字

從標準輸入讀取數字是讀取字串和解析諸如數字之類的字串的組合。

parse 函式用於將字串解析為所需的數字型別:

julia> parse(Int, "17")
17

julia> parse(Float32, "-3e6")
-3.0f6

parse(T, x) 預期的格式與 Julia 期望的數字文字格式類似,但不完全相同 :

julia> -00000023
-23

julia> parse(Int, "-00000023")
-23

julia> 0x23 |> Int
35

julia> parse(Int, "0x23")
35

julia> 1_000_000
1000000

julia> parse(Int, "1_000_000")
ERROR: ArgumentError: invalid base 10 digit '_' in "1_000_000"
 in tryparse_internal(::Type{Int64}, ::String, ::Int64, ::Int64, ::Int64, ::Bool) at ./parse.jl:88
 in parse(::Type{Int64}, ::String) at ./parse.jl:152

結合 parsereadline 函式,我們可以從一行讀取一個數字:

function asknumber()
    print("Enter a number: ")
    parse(Float64, readline())
end

它按預期工作:

julia> asknumber()
Enter a number: 78.3
78.3

關於浮點精度的常見警告適用。請注意,parse 可以與 BigIntBigFloat 一起使用,以消除或最小化精度損失。

有時,從同一行讀取多個數字很有用。通常,該行可以用空格分割:

function askints()
    print("Enter some integers, separated by spaces: ")
    [parse(Int, x) for x in split(readline())]
end

可以使用如下:

julia> askints()
Enter some integers, separated by spaces: 1 2 3 4
4-element Array{Int64,1}:
 1
 2
 3
 4