Это поведение Excel с большим шестнадцатеричным числом ожидается?

Извините за неопределенный заголовок вопроса, но я не уверен, как лучше всего выразить это.

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

5000097208326954

это обнаруживается как

5E+15

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

5000097208326950

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

Это находится на Excel 2003 SP3.

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

3
задан 25.04.2011, 12:01

5 ответов

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

Как заметка на полях, Вам, вероятно, перепутали Шестнадцатеричную систему счисления с Экспоненциальным представлением

6
ответ дан 07.12.2019, 22:54

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 для вычисления функций как грех, потому что и экспорт. Эти библиотеки довольно неточны по сравнению с научными, даже воздействующими на те же числа размера.

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

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

Старые школьные программисты использовали ФОРТРАН для математики, которая делает математику в десятичном числе, как Вы или я. Библиотеки очень точны в ФОРТРАНЕ, поскольку пользователи ожидают делать численные методы; для именно это это. Калькуляторы используют десятичное число внутренне также.

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

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

3
ответ дан 07.12.2019, 22:54

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

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

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

Этот форум может дать Вам подсказки к превышению созданного в ограничениях при необходимости.

Кроме того, как делают Вас формат Excel для распознавания значения, как являющегося в ШЕСТНАДЦАТЕРИЧНОМ ЧИСЛЕ, а не DEC?

2
ответ дан 07.12.2019, 22:54

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

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

2
ответ дан 07.12.2019, 22:54

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

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

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

0
ответ дан 07.12.2019, 22:54

Теги

Похожие вопросы