我被困在这段代码上
hdiag = zeros(Float64,2)
hdiag = [0,0]
println(hdiag)
hdiag[1] = randn()
在最后一行中,我得到一个
InexactError
。这很奇怪,因为randn()是一个
Float64
,但是由于某些原因,我必须执行hdiag=randn(2)
,然后应该没有问题。 最佳答案
该行:
hdiag = [0,0]
更改
hdiag
以引用与以前完全不同的全新数组。在这种情况下,该新数组是整数数组,因此任何后续赋值都需要转换为整数。索引分配是不同的;它更改了现有数组的内容。因此,您可以使用
hdiag[:] = [0,0]
,它将更改内容,同时将整数转换为浮点数。在版本0.5中,这变得更加容易,您可以在其中使用新的.=
点分配语法将其分配给现有数组:hdiag .= [0,0]
会做你想要的。有关数组,绑定和赋值的更多详细信息,建议阅读此博客文章:Values vs. Bindings: The Map is Not the Territory.
关于julia - 奇怪的设置索引错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41942928/