В REPL Julia 1.0.0 я получаю следующие результаты:
# Line 1: This make sense. I did not expect a Float64 to equal a BigFloat.
julia> 26.1 == big"26.1"
false
# Line 2: This surprised me when Line 1 is considered. Again, like Line 1, I
# did not expect a Float64 to equal an equivalent BigFloat.
julia> 26.0 == big"26.0"
true
# Line 3: This I expected based on Line 1 behavior.
julia> 26.1 - 0.1 == big"26.1" - 0.1
false
# Line 4: This surprised me based on Line 1 behavior, but it might be
# explained based on Line 2 behavior. It seems to imply that if a Float64
# can be converted to an Integer it will compare equal to an equivalent BigFloat.
julia> 26.1 - 0.1 == big"26.1" - big"0.1"
true
Кажется, что Джулия здесь что-то скрывает для сравнения на равенство с Float64 и BigFloat, что делает строки 2 и 4 истиннымив то время как строки 1 и 3 являются ложными.Любые предложения?
Документ Джулии относительно "==", по-видимому, не охватывает такого рода вещи: https://docs.julialang.org/en/v1/base/math/#Base.:==
РЕДАКТИРОВАТЬ: На основе полезного комментария @EPo ниже, этолегко сделать все вышеприведенные сравнения полученными.Например, строка 1 и строка 3 истинны ниже, хотя они были ложными выше:
# Line 1 is now true.
julia> 26.1 ≈ big"26.1"
true
# Line 3 is now true.
julia> 26.1 - 0.1 ≈ big"26.1" - 0.1
true