Betrag/Summe anders darstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
fiuman
User
Beiträge: 1
Registriert: Mittwoch 30. Juli 2008, 10:15

Betrag/Summe anders darstellen

Beitragvon fiuman » Mittwoch 30. Juli 2008, 10:26

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
n4p
User
Beiträge: 55
Registriert: Dienstag 10. Juni 2008, 11:05

Beitragvon n4p » Mittwoch 30. Juli 2008, 10:59

rasco
User
Beiträge: 3
Registriert: Samstag 1. Dezember 2007, 06:20

Beitragvon rasco » Mittwoch 30. Juli 2008, 11:00

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)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Mittwoch 30. Juli 2008, 11:59

In diesem Thread findest du alles, was du brauchst:
http://www.python-forum.de/viewtopic.php?p=91832

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]