3

Извините за смутное название вопроса, но я не уверен, как лучше это сформулировать.

Когда я вставляю следующий номер в ячейку Excel:

5000097208326954

это проявляется как

5E+15

Все в порядке. Я понимаю. Тем не менее, когда я смотрю в функциональной панели, это выглядит как

5000097208326950

Это я не понимаю. Поведение кажется независимым от любого предыдущего форматирования, которое я мог бы поместить в ячейку.

Это на Excel 2003 SP3.

Я пропускаю какое-то тонкое ожидаемое поведение, или это ошибка?

5 ответов5

6

Кто-то, вероятно, придет с лучшим объяснением и исправлением, но в основном компьютеры хранят только определенное количество значащих цифр при представлении чисел с плавающей запятой и / или больших целых чисел. Excel (по крайней мере, по умолчанию) дает только первые ~ 15 цифр номера, а затем отбрасывает остальные. Вы можете убедиться в этом, добавив дополнительные цифры в конец вашего номера, например, f.ex. 5000097208326954123, и эти цифры будут округлены до 5000097208326950000.

Как примечание, у вас, вероятно, есть шестнадцатеричная система счисления, перепутанная с научной нотацией

3

Excel выполняет всю математику как числа с плавающей запятой двойной точности. (Всего 64 двоичных разряда)

это дает вам примерно от 14 до 15 цифр в десятичном виде.

5000 097 208 326 954

16 цифр. Если вы делаете это в Excel ...

A1 = 5000097208326954

A2 = A1 +1

A3 = A2-A1

A3 будет отображать 0.

Полное раскрытие: я являюсь членом ACM и обязан рассказать общественности о рисках, связанных с компьютерами. Это в нашем кодексе поведения.

Пожалуйста, не используйте Excel для чего-то критического.

Более точные ответы вы получите с помощью карманного научного калькулятора.

Excel написан на C/C++ и использует 64-разрядные числа. Он также использует библиотеки Microsoft с плавающей запятой для вычисления таких функций, как sin, cos и exp. Эти библиотеки довольно неточны по сравнению с научными, даже работают с одинаковыми номерами размеров.

Плавающая точка хороша для простых вещей, но ужасна для научной работы или серьезной инженерии, они слишком неточны. Численные методы, в которых вы добавляете и умножаете числа снова и снова, становятся ужасно быстрыми с плавающей запятой, когда исчезают 15 цифр точности, одна цифра каждые 4 умножения.

С плавающей точкой плохо для финансовой работы (0.2 является бесконечным повторяющимся числом в двоичной плавающей запятой.) Так что, если вы добавите 0,2 доллара 1000 раз, некоторые деньги пропадут. Программисты в финансовом мире используют числа с бесконечной точностью там, где они должны (точно так же, как пишут числа на бумаге), а затем используют специальные функции для вычисления денег, чтобы при суммировании всех округлений не пропадали деньги.

Старые школьные программисты использовали FORTRAN для математики, которая выполняет математику в десятичном формате, как вы или я. Библиотеки очень точны в FORTRAN, поскольку пользователи ожидают использовать численные методы; вот для чего это. Калькуляторы используют десятичную внутреннюю тоже.

Я использовал Excel для воспроизведения ошибок математического округления в программах на Си раньше.

Таким образом, вы можете получить безумно неправильные графики ваших расчетов.

2

Как уже указывалось, это ограничение в 15 значащих цифр, когда Excel хранит числа. Если это не число, которое вам нужно использовать для вычисления чего-либо в соответствии с его значением, а скорее ссылка, такая как серийный номер или код продукта, тогда лучшим вариантом будет отформатировать ячейку как текст (а не значение по умолчанию для общего ), прежде чем вставить его, он сохранит все цифры. Это также помешает ему быть умным и показывать его в научной записи как «полезный».

Конечно, если это действительно шестнадцатеричное число (но вы случайно выбрали экзамен без цифры больше 9), то вы определенно не хотите, чтобы Excel воспринимал его как число. а) потому что он будет считать, что он десятичный, и не получится, если в нем есть буквы. б) это будет означать, что число еще больше по величине, и если вы преобразуете его в десятичную, вы будете более 15 цифр.

2

Вы спрашиваете, почему последняя цифра отображается как 0 вместо 4, да?

Я считаю, что эта ссылка содержит ответ. если вы посмотрите в спецификации расчета, максимальная точность числа составляет 15 цифр. Если посмотреть на другие спецификации, похоже, что Excel, вероятно, все еще содержит полное значение введенного вами числа, поэтому, если вы используете число в формуле, оно все равно должно вычисляться правильно.

Честно говоря, все важные цифры ускользнули от моего понимания в колледже, поэтому я не могу сказать вам, почему Excel был настроен таким образом.

Этот форум может дать вам указание на превышение встроенных ограничений, если это необходимо.

Кроме того, как вы форматируете Excel, чтобы распознавать значение как в HEX, а не DEC?

0

Щелкните правой кнопкой мыши по ячейке или во всех ячейках> Форматировать ячейки> Выберите один из следующих форматов:

  • число (или его варианты): распознавать как числовое значение
  • текст: лучший вариант, потому что если вы можете использовать 0 в левой части, они появятся

Ну, я не мог увидеть это решение здесь - только некоторая дискуссия о научной нотации или возможная ошибка в ваших шестнадцатеричных числах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .