Pig*_*gna 3 rational-number input type-conversion julia
我想读取用户输入并将其存储为Rational,无论类型如何:integer,float ot rational.例如:
5 --> store it as 5//1
2.3 --> store it as 23//10
4//7 --> store it as 4//7
Run Code Online (Sandbox Code Playgroud)
目前我写了以下内容:
a = convert(Rational,parse(Float64,readline(STDIN)))
Run Code Online (Sandbox Code Playgroud)
如果我输入一个整数,如5,那很好.
但如果我输入2.3,a商店2589569785738035//1125899906842624
.
如果我输入一个分数(无论是形式4/7还是形式4//7)我得到一个ArgumentError: invalid number format for Float64.
如何解决Float和Rational问题?
一种方法是将原始输入解析为Expr(符号),eval表达式,将其转换为a Float64并使用rationalize来简化生成的有理数:
julia> rationalize(convert(Float64, eval(parse("5"))))
5//1
julia> rationalize(convert(Float64, eval(parse("2.3"))))
23//10
julia> rationalize(convert(Float64, eval(parse("4/7"))))
4//7
julia> rationalize(convert(Float64, eval(parse("4//7"))))
4//7
Run Code Online (Sandbox Code Playgroud)
rationalize使用近似浮点数,您可以在参数中指定错误tol.
用Julia Version 0.4.3测试
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |