在Julia 1.0.0 REPL中,我得到了以下行为。第一行是documentation https://docs.julialang.org/en/v1/base/math/#Base.Rounding.RoundFromZero中的示例
julia> BigFloat("1.0000000000000001", 5, RoundFromZero)
1.06上面例子中的5的意思我不太清楚。例如,
julia> BigFloat("1.01", 5, RoundFromZero)
1.06在REPL中,被四舍五入的两个数字似乎应该舍入为不同的输出。我遗漏了什么?
发布于 2018-09-10 06:09:39
该值以5位精度从零四舍五入,在这两种情况下,该值都与1.0625相同。您可以使用以下命令进行检查:
julia> Float64(BigFloat("1.01", 5, RoundFromZero))
1.0625或
julia> big(0)+BigFloat("1.01", 5, RoundFromZero)
1.0625或者(这是黑客行为,不应该这样做):
julia> x = BigFloat("1.01", 5, RoundFromZero)
1.06
julia> x.prec = 10
10
julia> x
1.0625或
julia> Base.MPFR._string(x, 10)
"1.0625"现在打印1.06的原因是Julia舍入了输出(在本例中,这是来自MPFR外部库的默认舍入)。
https://stackoverflow.com/questions/52248130
复制相似问题