Мы знаем, что в C диапазон с плавающей запятой составляет от 1.xxxx * 10^-38 до 3.xxxx * 10^38 для одиночной точности.Операция с плавающей запятой в c
На моей лекции сползает есть эта операция:
(10^10 + 10^30) + (-10^30) ?= 10^10 + (10^30 + -10^30)
10^30 - 10^30 ?= 10^10 + 0
Я задаюсь вопросом, почему 10^10 + 10^30 = 10^30 в этом случае?
Я думал, что диапазон FP может опуститься до 10^-38 и до 10^38, не должно быть переполнения, поэтому `10^10 + 10^30 не должно заканчиваться 10^30.
Вы должны проверить остальную часть слайдов, плавающие точки также ограничены в количестве значащих цифр. Таким образом, результат округлен и не точным. – Nabla
@ yklee1013 «Мы знаем, что в C диапазон с плавающей запятой ...» не указан в C. В C диапазон _minimum_ 'float' составляет от 1E-37 до 1E + 37. Для представления о точности: минимальное значение «FLT_DIG» равно 6, а максимальное значение «FLT_EPSILON» равно 1E-5. C11 §5.2.4.2.2. Неудивительно, что 'float' на выбранной платформе (10^10 + 10^30) = (-10^30), просто недостаточно. – chux