Преобразование строки с двумя парами цифр в число

У меня есть строка, содержащая десятичное значение в «ab.xy» (например, «32,15»). Мне нужно преобразовать это в десятичное число, например ab.xy (32.15).

Я должен делать

     float (number_string)

или я должен сделать

     decimal.Decimal(number_string)

Мы не хотим, чтобы изменялась целостность десятичного числа, представленного в строке. Это означает, что мы хотим, чтобы число, представленное в строке, было преобразовано точно так же, как и в десятичное число. Согласно блогу Decimal vs float в Python, использование decimal.Decimal лучше, чем float. Не могли бы вы взвеситься?

Вы должны использовать decimal.Decimal или fraction.Fraction, если вы не хотите иметь ошибок, связанных с представлением с плавающей запятой. Поскольку вы начинаете со строкового представления десятичного числа, decimal.Decimal кажется лучшим выбором.

zvone 10.12.2020 23:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Использование целых чисел — хороший трюк, когда вы знаете, что всегда есть два десятичных знака — вы можете просто сохранить value * 100. Я видел, что используется для расчетов с деньгами. С другой стороны, использование decimal более явное. А дроби отлично подходят для сохранения точности даже после деления двух значений.

zvone 11.12.2020 00:05

Если у вас есть большие наборы данных, целые числа более эффективны. Хотя не совсем уверен, я думаю, что десятичная реализация на самом деле просто использует дроби, которые в основном представляют собой всего 2 целых числа, например. Дробь (10, 100) = 0,1

greylock 11.12.2020 00:16

Другие вопросы по теме