>我在处理范围内的双数时遇到问题。具体说来:
using ForwardDiff: Dual
t = Dual.((0.0,10.0),0)
(t[1]:1/60:t[2])[end]
问题似乎是[end]
使用last
然后计算步骤数,因此某些东西试图转换为Integer
并失败。有谁知道解决这个问题的方法?
你可以这样修复它:
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)
因此不能在任何地方使用。