Inoltre a @xanatos risposta bene, prendere in considerazione alcuni dei PO middle-of-the-post preoccupazioni:
mi chiedo se ci sono alcune situazioni in cui il (arrotondamento) Errore non si applica
candidati includono some_double_y = some_double_x * 1.0
e some_double_y = some_double_x + 0.0
non possono mai incorrere in un errore di arrotondamento.
Tuttavia anche questi sono sospetti a causa di un compilatore può valutare double
a precisione superiore considerando la FLT_EVAL_METHOD == 2
dove "valutare tutte le operazioni e le costanti alla gamma e la precisione del tipo long double
". In tal caso, un valore intermedio some_double_x
può esistere come long double
diverso da un valore double
apparente di 0.0
o 1.0
.
Oltre ai valori speciali come NaN, Infinity o -Infinity, è corretto assumere che qualsiasi numero normale moltiplicato per lo zero esatto produce esattamente zero. –