Microsoft Excel использует собственный тип Double на конкретной машине для выполнения своих расчетов. Я не уверен, что именно PHP использует.
Однако следует отметить, что даже копирование числа с плавающей запятой на компьютерах с процессором x86 может изменить его значение. Плавающие точки хранятся внутри в регистрах шириной 80 бит. Они хранятся в памяти в блоках шириной 64 бита. Поэтому, предполагая, что и Excel, и PHP работают на компьютерах с архитектурой x86, вы можете получить разные значения даже при одинаковых вычислениях. Особенно в крайних диапазонах, поддерживаемых типами с плавающей запятой.
Наконец, есть очевидная разница между double
, который использует Excel, и (если ваш PHP-код его использует) и float
в коде PHP. Убедитесь, что вы не ошиблись, поскольку float
s имеют гораздо меньшую точность.
РЕДАКТИРОВАТЬ: забыл об этом тоже - будут различия в выходных данных, если PHP или Excel (более вероятно, Excel) использует / использует расширения SSE, поскольку их операции с плавающей запятой работают на 64-битных, а не 80-битных, удваивается.