2016-03-02 111 views
1

我沿着“Julia语言文档版本0.5.0-dev”并运行一些演示命令,这是一个错误。 (参考第28页)Julia:LoadError:UndefVarError:setrounding未定义

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

抛出错误:

ERROR: UndefVarError: setrounding not defined

它看起来像setrounding,但不应该是一个变量,而是一个功能。

+0

您使用的是哪个版本的Julia? –

+0

是刚刚意识到,我使用0.4.2。那是问题吗? –

+2

对于版本0.4,我认为函数是[set_rounding](http://docs.julialang.org/en/release-0.4/stdlib/numbers/#Base.set_rounding)(带下划线) – Gomiero

回答

4

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

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

version selector

2

在朱莉娅0.4,出现了两种不同的功能,set_rounding以彻底改变舍入模式,并with_rounding,你会在你写的例子,给定函数在此期间,只能暂时改变舍入模式使用(在你的情况下,do...end块中的代码)。

在朱0.5,这些在Base被合并到所述单个setrounding功能,执行这两个任务,并且,符合对功能的倾向,不再有下划线(_)。

这个更名的讨论可以在原来的拉动请求中找到:https://github.com/JuliaLang/julia/pull/13232

您也可以使用新的0.5语法甚至0.4,通过做 using Compat第一;这是Julia向后兼容模块,在这种情况下,它将使用正确的行为来定义setrounding函数。 (您需要Compat的版本至少0.7.11;如果您有以前的版本,只需执行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}()