В настоящее время мы экспериментируем с числами с плавающей запятой и столкнулись с программой на Фортране, где не смогли понять, что происходит.
program test
a=0.1
print*, a * .1 * 10.
print*, .1 * a * 10.
print*, .1 * 10. * a
end program test
Вопрос: почему он дает разные результаты?
0.100000009
0.100000009
0.100000001
Мы думаем, что это может быть как-то связано с моделью представления чисел с плавающей запятой (мантисса, экспонента,...) и с тем, как компьютер округляет числа, но мы не уверены.
Кто-нибудь может подробно объяснить, как это работает?