当我运行一些代码时,我必须添加一个向量的元素然后重新规范化。我得到了NaN,所以我希望能解决这个问题。
例如,当x = [1,2,3]
为vector<double>
我计算sum(x) = 6
,然后通过为x中的所有i设置x/6
来找出x[i] = x[i]/sum(x)
。问题是x通常会保持大的双倍,有时当我计算sum(x)
(len(x)
的方式也非常大时,我得到了NaN。我怎么能处理这个问题,以至于我没有得到NaN?
将其更改为存储long double可能有效吗?
答案 0 :(得分:0)
你确认你的载体没带NaN吗?顺便说一句 - 你使用的“规范”对任意向量都不是非负的,你确定你不想求和(x [i])求和吗?
答案 1 :(得分:0)
检查原始载体中的数据。其中一些可能是总和之前的NaN ,因此你得到了总和(x)= NaN
。