我被困在这段代码上

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/

10-10 16:26