Я хочу передать значение кортежа с запятой в строку в python. Пример ввода: 3500,60, а вывод должен быть 3500,6 (строковый тип)
value=3,500.60
s=str(value)
это возвращает (3, 500,6)
но я хочу как 3500,6
Является ли это возможным?
В Python нет такой вещи, как «значение с плавающей запятой с запятой». 3,500.6
— это кортеж, состоящий из целого числа 3
и числа с плавающей запятой 500.6
.
3500,60 не является числом с плавающей запятой. Это кортеж из чисел 3 и 500,60. Вы не можете использовать запятую в качестве разделителя тысяч для числовых литералов. Однако вы можете использовать подчеркивание, если хотите: 3_500.6
равно 3500.6
.
на самом деле это ввод валюты. Я не должен этого делать @sayse
когда вы делаете value=3,500.60
, вы делаете значение равным кортежу, в котором есть элементы 3
и 500.6
.
Хорошо, тогда как я могу конвертировать валюту в строку простым способом?
Если это значение должно представлять валюту, я настоятельно рекомендую нет использовать для его хранения число с плавающей запятой. Плавающие числа не могут точно представлять многие числа с двумя значениями после десятичной точки. Например, число с плавающей запятой 3500.6 внутренне хранится как 3500.59999999999990905052982270717620849609375
, и эта неточность может привести к ошибкам позже, если вы попытаетесь выполнить с ним арифметические действия. Рассмотрите возможность хранения вашей валюты в виде целого числа центов или, возможно, используйте decimal.Decimal
.
Возможный дубликат Как напечатать число с запятыми в качестве разделителей тысяч?
Вы неправильно написали свой номер? Должно ли это быть value = 3_500.60
согласно PEP 515?
Возможный дубликат Как использовать разделители цифр для целочисленных литералов Python?
Я задал однострочное выражение, которое дает такой вывод. Во всяком случае, это решило мою проблему.
value=3,500.60
b=''
for i in str(value):
if not i in (' ','(',')'):
b+=i
print(b)
ОБНОВИТЬ
Это то, что я хочу: Способ 1:
print(str(map(lambda x:x if x not in ('(',')') else '',[i for i in value])).strip('[]').replace(' ',''))
Способ 2:
print(str(value).strip('()').replace(' ',''))
Все они дали результат 3500,6
Это очень экстремальный способ позволить вам продолжать использовать кортежи в вашем коде, а не фактические числовые типы.
Вы анализируете кортеж, это не поплавок. убери запятую