Julia 中如何实现有理数

How are rational numbers implemented in Julia

分子和分母是否存储为整数?具体来说,加减乘除的基本运算是如何实现的?

https://github.com/JuliaLang/julia/blob/248bbf6d61b643d0101bf96093cd7621e5bcf477/base/rational.jl#L9-L15

代码相当可读,简而言之:

struct Rational{T<:Integer} <: Real

表示分子和分母的类型相同,类型为<: Integer


如果您想知道某些操作是如何实现的,请在您的 REPL 中尝试 运行:

julia> @edit 1//2 + 3//4

它应该会带你到 https://github.com/JuliaLang/julia/blob/248bbf6d61b643d0101bf96093cd7621e5bcf477/base/rational.jl#L285

要理解 Julia 中正在发生的事情,甚至更快更容易的方法就是使用 dump 命令,例如:

julia> dump(3//4)
Rational{Int64}
  num: Int64 3
  den: Int64 4