Как лучше всего подвести итог большого количества чисел с плавающей точкой?

В последнее время вы можете использовать функцию intern, чтобы убедиться, что вы получаете ссылку на одну и ту же строку:

>>> a = intern('a')
>>> a2 = intern('a')
>>> a is a2
True

Как указано выше, вы, вероятно, не должны делать является определение равенства по строкам. Но это может быть полезно узнать, есть ли у вас какое-то странное требование использовать is.

Обратите внимание, что функция-интернатура перешла из встроенной функции в модуль sys для Python 3.

34
задан martinus 29 December 2008 в 21:31
поделиться

4 ответа

Для "более точного": этот рецепт в Поваренной книге Python имеет алгоритмы суммирования, которые сохраняют полную точность (путем отслеживания промежуточные итоги). Код находится в Python, но даже если Вы не знаете Python, который это достаточно ясно адаптировать к любому другому языку.

Все подробности даны в данная статья .

24
ответ дан 27 November 2019 в 17:07
поделиться

См. также: алгоритм суммирования Kahan Это не требует O (n) устройство хранения данных, но только O (1).

14
ответ дан 27 November 2019 в 17:07
поделиться

Ну, если Вы не хотите сортировать затем, Вы могли бы просто сохранить общее количество в переменной с типом более высокой точности, чем отдельные значения (например, использовать двойное для хранения суммы плаваний, или "четверка" для хранения суммы удваивается). Это наложит потерю производительности, но это могли бы быть меньше, чем стоимость сортировки.

0
ответ дан 27 November 2019 в 17:07
поделиться

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

0
ответ дан 27 November 2019 в 17:07
поделиться
Другие вопросы по тегам:

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