На новом листе (я использую Excel 2013), начиная с верхнего левого угла, я набираю:
=18.6 + 67.2
| =A1-85.8 = 0
| =(A1-85.8) * 1000000000000
ожидание
85.8
| TRUE
| 0
Фактический результат
85.8
| FALSE
| 0.014210855
Я хорошо знаю, что числа с плавающей запятой могут вести себя так, но я все еще удивлен, что это происходит с такими простыми операциями над числами, каждое из которых имеет небольшое количество значащих цифр и схожие порядки величин.
Может кто-нибудь объяснить, почему это происходит и почему это происходит только с некоторыми парами значений (и всегда не целыми числами)?
Число строк, заполненных так (и повторное использование F9
):
=RANDBETWEEN(10, 1000)/10
| =RANDBETWEEN(10, 1000)/10
| =A1 + B1
| =C1-ROUND(C1,1)=0
| =(C1-ROUND(C1,1)) * 1000000000000
помогает продемонстрировать очевидную случайную природу этого явления.