Проверить ноль или денормализованное число в c ++

В настоящее время у меня есть некоторый код, в котором я должен нормализовать вектор двойников (разделить каждый элемент на сумму). При отладке я иногда вижу, что все элементы в векторе равны 0,0. Если затем я возьму сумму элементов, я получу либо 0,0, либо 4,322644347104e-314 # DEN (которое, как я недавно узнал, было денормализованным числом). Я хотел бы предотвратить нормализацию вектора для случаев, когда сумма равна 0,0 или денормализованному числу. Единственный способ, которым я мог подумать об обработке этих двух случаев, - это проверить, меньше ли сумма, чем «эпсилон», где эпсилон - это небольшое число (но я не уверен, насколько маленьким будет эпсилон).

У меня есть 2 вопросы:

  1. Как лучше всего учитывать эти случаи?
  2. Зависит ли значение денормализованного числа от машины?
5
задан Aziz Shaikh 1 October 2012 в 06:42
поделиться