C / C ++ NaN分辨率

时间:2013-05-21 16:59:06

标签: c++ c vector double nan

当我运行一些代码时,我必须添加一个向量的元素然后重新规范化。我得到了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可能有效吗?

2 个答案:

答案 0 :(得分:0)

你确认你的载体没带NaN吗?顺便说一句 - 你使用的“规范”对任意向量都不是非负的,你确定你不想求和(x [i])求和吗?

答案 1 :(得分:0)

检查原始载体中的数据。其中一些可能是总和之前的NaN ,因此你得到了总和(x)= NaN