1

在 Julia 1.0.0 REPL 中,我得到以下行为。第一行是文档 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 中的不同输出。我错过了什么?

4

1 回答 1

2

该值以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 外部库的默认舍入)。

于 2018-09-09T22:09:38.687 回答