我有两个用git跟踪我程序的实例,所以我知道它们是同步的。一个实例在机器A中,另一个在机器B中。
机器A运行正常,但是当我去机器B时,我得到以下错误:
ERROR: InexactError()
in setindex! at array.jl:307
in setindex! at array.jl:345
in main at /path/to/main.jl:122
in include at ./boot.jl:246
in include_from_node1 at loading.jl:128
in process_options at ./client.jl:285
in _start at ./client.jl:354
in _start_3B_3587 at /home/usr/julia/usr/bin/../lib/julia/sys.so
while loading /path/to/main.jl, in expression starting on line 265
我不明白为什么会抛出错误。两台机器都有Julia的最后一个主版本:
Version 0.4.0-dev+3322 (2015-02-12 13:56 UTC)
Commit 1ec68b3* (0 days old master)
抛出错误的行是
array2 = zeros(Float64,NHn*2000)
for iRealiz in 1:2000
...
ij = (iRealiz-1)*NHn
egvals_ts, egvecs_ts = eig(timeser)
array2[ij+1:ij+NHn] = egvals_ts
...
end
NHn是矩阵维度。
答案 0 :(得分:14)
当您尝试将值Inexact Error
转换为无法代表x
值的T
类型时,会引发x
。例如,在朱莉娅0.4:
julia> convert(Int, 3.0)
3
julia> convert(Int, 3.2)
ERROR: InexactError()
in convert at int.jl:189
julia> convert(UInt, -2)
ERROR: InexactError()
最后,在与您的案件相关的内容中:
julia> convert(Float64, 2+0.3im)
ERROR: InexactError()
in convert at complex.jl:16
我的理论是,舍入误差(取决于特定的CPU)导致它在一台机器上返回复值特征值而不是另一台机器。