строка с отрицательным значением, преобразованным в число с плавающей точкой - PullRequest
1 голос
/ 26 июня 2019

У меня есть проект django / python, и пользователь вводит отрицательное значение в виде строки. Но когда я пытаюсь преобразовать строку в число с плавающей точкой, я получаю сообщение об ошибке.

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

import os, sys
from moneyed import Money
from moneyed.localization import format_money


moneystring = str('-$180.00')
print Money(float(moneystring.strip("$").replace(',', '')), 'USD')

Traceback (последний вызов был последним): Файл "./moneytest.py", строка 31, в print Money (float (moneystring.strip ("$"). replace (',', '')), 'USD') ValueError: не удалось преобразовать строку в число с плавающей точкой: - $ 180,00

1 Ответ

0 голосов
/ 26 июня 2019

Вы должны использовать .replace(..) или что-то еще, что может удалить символы для удаления доллара, например:

moneystring = '-$180.00'
print Money(float(moneystring<b>.replace('$', '')</b>.replace(',', '')), 'USD')

Это необходимо, так как .strip(..) удаляет , ведущий и трейлинг символов.Но для строки '-$180.00', $ это , а не начальный или конечный символ.

При этом я настоятельно советую вам не использовать float(..), так как это неточно.Money внутренне использует десятичное число.Так что лучше обработайте это как:

from moneyed import Money, USD

moneystring = '-$180.00'
print Money(moneystring.replace('$', '').replace(',', '')), USD)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...