Как отметил @Dominique, xxxE-12
- это очень, очень небольшое число.Это очень, очень близко к нулю.
xxxE-12
- это способ написания Excel (и большинства языков программирования) xxx * 10^-12
.
Как вы уже догадались, это связано с округлением.Тем не менее, он также отображает проблемы того, как компьютеры обрабатывают числа с плавающей запятой (десятичные);то, что вы думаете, 1/3 = 0,333, может быть внутренне представлено как что-то вроде 0,333333681.См. https://en.wikipedia.org/wiki/Floating-point_arithmetic, или, в частности, https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems.
Во-вторых, почему это происходит, если ячейка отформатирована как «Общая», а не «Число»?С «Number» вы ожидаете целую часть и, самое большее, скажем, 3 десятичных знака.x.xxE-12
имеет наибольший ненулевой компонент с 12-ым (!) Десятичным знаком.Таким образом, при отображении он округляется до хорошего нуля.«Общее», однако, пытается отобразить число как близкое к фактическому значению, которое в данном случае является xxxE-12
.
Также обратите внимание, что это может вызвать проблемы, если вы попытаетесь сравнить рассчитанное значение с нулем,Скажите, =IF(SUMIF(...) = 0, ...
;он может не иметь значения ИСТИНА, даже если вы думаете, что это так (из-за очень малого значения).Вместо этого решение состоит в том, чтобы сравнить разницу рассчитанного значения с нулем: =IF(ABS(SUMIF(...) - 0) < 1E-9, ...
.