從標準輸入讀取數字
從標準輸入讀取數字是讀取字串和解析諸如數字之類的字串的組合。
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
結合 parse
和 readline
函式,我們可以從一行讀取一個數字:
function asknumber()
print("Enter a number: ")
parse(Float64, readline())
end
它按預期工作:
julia> asknumber()
Enter a number: 78.3
78.3
關於浮點精度的常見警告適用。請注意,parse
可以與 BigInt
和 BigFloat
一起使用,以消除或最小化精度損失。
有時,從同一行讀取多個數字很有用。通常,該行可以用空格分割:
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