Hallo zusammen,
bin neu hier und habe gerade mit python angefangen.
Ich will gerade eine große Zahl (30 Millionen) durch Punkte trennen.
Also momentan sieht es so aus 30000000.00 und es soll so aussehen:
30.000.000,00
Ich kenne noch von C diese printf direktiven, geht jetzt hier bei python auch,
%0.2f damit er zwei Nachkommastellen macht. Wie erreiche ich aber diese andere Trennung? Hat da jemand eine Idee?
Vielen Dank.
Mfg,
fiuman
Betrag/Summe anders darstellen
Herzlich Willkommen.
Hier wurde das schonmal besprochen
Hier wurde das schonmal besprochen
Hi,
ich habe mir mit einer eigenen Klasse geholfen. Bessere Vorschläge, die aber unter Python 2.3 laufen müssen, würden mich aber auch brennend interessieren.
Hier mein Code:
import locale
import sys
if sys.platform=='win32':
locale.setlocale(locale.LC_NUMERIC,"")
else:
locale.setlocale(locale.LC_ALL,"de_DE")
class IFloat(float):
def __new__(cls,f=0,nk=2):
if type(f) is str:
f = f.replace('.','')
f = f.replace(',','.')
f = float(f)
newFloat = float.__new__(cls,f)
return newFloat
def __init__(self,f,nk=2):
self.nk = nk
if type(f) is str:
f = f.replace('.','')
f = f.replace(',','.')
f = float(f)
self.f = f
def __add__(self,other):
""" Addiert IFloat mit IFloats oder floats.
Die Umgekehrte Richtung float + IFloat liefert wieder einen float
"""
if isinstance(other,IFloat):
if self.nk > other.nk:
return IFloat(self.f + other.f,self.nk)
else:
return IFloat(self.f + other.f,other.nk)
else:
return IFloat(self.f + other,self.nk)
def __str__(self):
if self.nk == 5:
return locale.format("%.5f",self.f,True)
else:
return locale.format("%.2f",self.f,True)
__repr__ = __str__
def get_str(self):
return str(self.f)
ich habe mir mit einer eigenen Klasse geholfen. Bessere Vorschläge, die aber unter Python 2.3 laufen müssen, würden mich aber auch brennend interessieren.
Hier mein Code:
import locale
import sys
if sys.platform=='win32':
locale.setlocale(locale.LC_NUMERIC,"")
else:
locale.setlocale(locale.LC_ALL,"de_DE")
class IFloat(float):
def __new__(cls,f=0,nk=2):
if type(f) is str:
f = f.replace('.','')
f = f.replace(',','.')
f = float(f)
newFloat = float.__new__(cls,f)
return newFloat
def __init__(self,f,nk=2):
self.nk = nk
if type(f) is str:
f = f.replace('.','')
f = f.replace(',','.')
f = float(f)
self.f = f
def __add__(self,other):
""" Addiert IFloat mit IFloats oder floats.
Die Umgekehrte Richtung float + IFloat liefert wieder einen float
"""
if isinstance(other,IFloat):
if self.nk > other.nk:
return IFloat(self.f + other.f,self.nk)
else:
return IFloat(self.f + other.f,other.nk)
else:
return IFloat(self.f + other,self.nk)
def __str__(self):
if self.nk == 5:
return locale.format("%.5f",self.f,True)
else:
return locale.format("%.2f",self.f,True)
__repr__ = __str__
def get_str(self):
return str(self.f)
In diesem Thread findest du alles, was du brauchst:
http://www.python-forum.de/viewtopic.php?p=91832
http://www.python-forum.de/viewtopic.php?p=91832