有理数在 Julia 中是如何实现的

Ale*_*ila 4 rational-number programming-languages julia

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

jli*_*ing 7

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

简而言之,代码具有相当的可读性:

struct Rational{T<:Integer} <: Real
Run Code Online (Sandbox Code Playgroud)

意味着分子和分母具有相同的类型,并且该类型是<: Integer


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

julia> @edit 1//2 + 3//4
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,@edit 是我在 Julia 中最喜欢的宏之一 (2认同)