Кто-нибудь знает, почему при экспорте данных в Excel некоторые цифры меняются с целых чисел или целых на десятичные числа с 5 или более цифрами. Например, 800 станет 799,999996 или 800,00005. Он не делает это для каждой ячейки с номером - похоже, что нет никакой последовательности.

Есть ли способ не допустить этого или что-то присуще базам данных?

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

Спасибо!

1 ответ1

0

Мы, люди, привыкли использовать "базовую десятку" для представления чисел.

Это устанавливает некоторые конкретные константы как "иррациональные" (см. Https://en.wikipedia.org/wiki/Irrational_number), например: 1/3, 1/7, квадратный корень два, PI - некоторые из них.

Теперь, если вы решите использовать базу два вместо (как это делают компьютеры), иррациональные числа изменятся; например, 1/10 - это единица, состоящая из «0,000110011» в "калькуляторе", который есть у меня в Ubuntu; при переключении в режим программирования и двоичного (база два). 1 справа от десятичной запятой теперь представляют 1/16+1/32+1/256+1/512, что соответствует «0.099609375» в десятичном виде - что довольно близко к 1/10, но не совсем.

То же самое верно для набора значений. Который? Я не могу сказать, но я совершенно уверен, что их много.

Теперь в дополнение к этому добавьте эффекты представления с плавающей запятой ограниченной точности, например, используя только 32 бита (см. Описание формата здесь, сравните с «8+E2» для десятичного числа).

1/10 (десятичное число) = 0,0 0011 0011 0011 0011 ... (двоичное)

Для чего это стоит: 800, представленный как двоичный файл, не должен появляться со странными десятичными числами; так как 8 = 2 ^ 3, а 2 равно 2 ^ 0, оба являются простыми базовыми двумя числами, которые хранятся как таковые в представлении с плавающей запятой внутри компьютера.

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