【问题标题】:Julia: LoadError: UndefVarError: setrounding not defined朱莉娅:LoadError:UndefVarError:未定义setrounding
【发布时间】:2016-03-02 20:06:04
【问题描述】:

我正在关注“Julia 语言文档版本 0.5.0-dev”并运行他们的一些演示命令,这个会引发错误。 (参考第 28 页)

setrounding(BigFloat, RoundDown) do
BigFloat(1) + parse(BigFloat, "0.1")
end

抛出错误:

错误:UndefVarError:未定义 setrounding

但 setrounding 似乎不应该是一个变量,而是一个函数。

【问题讨论】:

  • 你使用的是什么版本的 Julia?
  • 是的,刚刚意识到,我使用的是 0.4.2。有问题吗?
  • 对于0.4版本,我认为函数是set_rounding(带下划线)

标签: julia


【解决方案1】:

如果您正在使用 v0.4,则需要查看 0.4 文档,而不是您看到的 0.5 文档。在页面的右下角,您会看到一个带有绿色箭头的小黑框。单击它,然后选择所需的文档版本。

在这种特殊情况下,此函数的名称在 0.4(最新版本)和 0.5(当前开发)之间发生了变化。

【讨论】:

    【解决方案2】:

    在 Julia 0.4 中,有两个不同的函数,set_rounding 用于彻底更改舍入模式,with_rounding 将在您编写的示例中使用,它仅在给定函数期间临时更改舍入模式(在您的情况,do...end 块中的代码)。

    在 Julia 0.5 中,它们被合并到单个 setrounding 函数中,该函数执行这两项任务,并且与 Base 中的函数趋势一致,不再有下划线 (_)。

    关于这个重命名的讨论可以在原始的 Pull Request 中找到:https://github.com/JuliaLang/julia/pull/13232

    即使在 0.4 中,您也可以使用新的 0.5 语法,方法是 using Compat第一;这是 Julia 向后兼容模块,在这种情况下,它将定义具有正确行为的 setrounding 函数。 (您需要至少 0.7.11 的 Compat 版本;如果您有以前的版本,只需执行 Pkg.update()。)

    例如

    julia> using Compat
    
    julia> setrounding(BigFloat, RoundDown)   # 0.5 syntax
    3
    
    julia> get_rounding(BigFloat)   # 0.4 syntax -- not advisable to mix these!
    RoundingMode{:Down}()
    

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2014-12-31
      • 2017-01-15
      • 2016-02-18
      相关资源
      最近更新 更多