zHz00 Untitled

пятница, 14 марта 2025
05:45 Шок! Сумма меняется от перемены мест слагаемых!
Да, причину вчерашнего бага я отыскал, но в двух словах это не об'яснить. Тут надо статью писать. Может быть, как-нибудь в другой раз.

Вместо этого расскажу то, что рассказали мне о суммировании чисел. Как известно, точность в компьютере ограничена. Если мы складывает числа примерно одного порядка, то всё ок. Если же числа отличаются на десять порядков, то маленькие числа начинают теряться на фоне больших. То есть:

1e10+1 будет примерно равно 1e10.

Если использовать более точный тип (64 бита вместо 32, или даже ещё больше), то будет доступен больший разброс диапазонов, но ограничения всё равно будут.

Если мы суммируем большой массив, и числа в нём самые разнообразные, то существует риск потерять точность при суммировании из-за явления, которое я указал выше. Если маленьких чисел мало, то пёс с ним. А если у нас большинство чисел маленьких, но есть несколько больших? Потеря точности будет уже более значительной.

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

@темы: Лайфхак, Программирование

URL
Тут мелкие ресторанчики и всякие едальни по две на метр, ...
Вообше, раньше Корея была гораздо более гармоничным место...
кто еще там не был, рекомендую www.mtv.ru/games реально п...
Молодая психиатр приходит в свое отделение. С порога все ...
Сегодня у меня абсолютно пустая голова и в ней, что удиви...
Очень симпатичная изящная молодая женщина привела на прие...

14.03.2025 в 08:22

14.03.2025 в 08:22
Вот ты какое, "за время пути собака могла подрасти".
URL

14.03.2025 в 10:06

14.03.2025 в 10:06
Жиза жизненная.
Помнится в своё время, когда я еще на пхп писал, мне нужно было умножать НУ ОЧЕНЬ большие числа, то я для себя написал функции, которые не просто умножали и складывали, но хранили числа строго как строки и циклом проходились по "строке", держа в памяти копеечный участок того числа, чтобы избежать всех этих приколов.
Сейчас до сих пор сталкиваюсь с этим, когда эксель в больших числах заменяет все символы после 15-го на 0. Когда ищешь штрихкод, который 32 символа, а эксель все с 16 заменил на 0... Как кошку искать там, где её нет =)
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail