从标准输入读取数字
从标准输入读取数字是读取字符串和解析诸如数字之类的字符串的组合。
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