Найти - Пользователи
Полная версия: [?] Форматирование чисел
Начало » Python для новичков » [?] Форматирование чисел
1 2
foxtrot
Подскажите пожалуйста, как сделать разделение чисел по тысячам?
например, если число: 1234567890, то мне надо чтоб было: 1,234,567,890
         if price >= 10000:
price = "<font color=00CCFF>"+str(price)+"</font>"
elif price >= 100000:
price = "<font color=FF0099>"+str(price)+"</font>"
elif price >= 1000000:
price = "<font color=FFCC00>"+str(price)+"</font>"
elif price >= 10000000:
price = "<font color=00FF66>"+str(price)+"</font>"
elif price >= 100000000:
price = "<font color=33CCCC>"+str(price)+"</font>"
elif price >= 1000000000:
price = "<font color=FF0066>"+str(price)+"</font>"
else:
price = "<font color=FFFFFF>"+str(price)+"</font>"
Ferroman
O_O
Лобовое:
number = 1234567890
counter = 0
formatted_number = ''
for i in reversed(str(number)):
counter += 1
formatted_number += i
if counter==3:
formatted_number += ','
counter = 0
print formatted_number[::-1]
foxtrot
Ferroman, благодарю!
foxtrot
упс, проблема с числами вида: 123, 123456, 123456789.
он ставит запятую перед ними.
Ferroman
Ну, такую проблему, можно и самому решить.
foxtrot
Ferroman
Ну, такую проблему, можно и самому решить.
спасибо =) окончательный вариант у меня выглядит так:
на jython почемуто reversed(str(price)) не сработало.
         fprice = str(price)
fprice = fprice[::-1]
counter = 0
formatted_number = ''
for i in str(fprice):
counter += 1
formatted_number += i
if counter==3:
if price <1000:
formatted_number += ''
counter = 0
elif price > 1000 and price <1000000:
formatted_number += ','
counter = -1
else:
formatted_number += ','
counter = 0
pricee = formatted_number[::-1]
Ferroman
У нас уже строка. Зачем столько сравнений в цикле, когда надо просто убрать 1 символ, если он есть?
number = 123456
counter = 0
formatted_number = ''
for i in str(number)[::-1]: # переворачиваем строку
counter += 1
formatted_number += i
if counter==3:
formatted_number += ','
counter = 0
formatted_number = formatted_number[::-1] # переворачиваем строку назад.
if formatted_number[0]==',':
formatted_number = formatted_number[1:] # если есть запятая перед числом - убираем.
print formatted_number
Код можно укоротить, оптимизировать, если хочется красивше. Ну и вообще как функцию его описать надо бы.
shiza
import locale
locale.setlocale(locale.LC_NUMERIC, 'English_United States.1252')
print locale.format('%d', 12345, True)
shiza
Ferroman
У нас уже строка. Зачем столько сравнений в цикле, когда надо просто убрать 1 символ, если он есть?
number = 123456
counter = 0
formatted_number = ''
for i in str(number)[::-1]: # переворачиваем строку
counter += 1
formatted_number += i
if counter==3:
formatted_number += ','
counter = 0
formatted_number = formatted_number[::-1] # переворачиваем строку назад.
if formatted_number[0]==',':
formatted_number = formatted_number[1:] # если есть запятая перед числом - убираем.
print formatted_number
Код можно укоротить, оптимизировать, если хочется красивше. Ну и вообще как функцию его описать надо бы.
В этом коде засада с отрицательными числами
Ferroman
В этом коде засада не только с отрицательными, но и с дробями.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB