3

我在处理范围内的双数时遇到问题。具体来说:

using ForwardDiff: Dual
t = Dual.((0.0,10.0),0)
(t[1]:1/60:t[2])[end]

问题似乎是[end]使用lastwhich then what's 来计算步数,所以有些东西试图转换为 anInteger并失败。有谁知道解决这个问题的方法?

4

1 回答 1

3

你可以像这样修复它:

using ForwardDiff: Dual, value
t = Dual.((0.0,10.0),0)
Base.Integer(x::Dual) = Integer(value(x))
(t[1]:1/60:t[2])[end]

但可能 DualNumbers.jl 维护者应该决定这是否是一般的预期行为。我会说是的,因为Dual它不是Integer. 它也不应该破坏任何东西,因为Integer(::Dual)之前没有定义方法,所以它不能在任何地方使用。

于 2019-02-10T15:01:21.643 回答