Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > dk.edb.programmering > #63

[Python] Ulogisk talformatering

Path csiph.com!eternal-september.org!feeder.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From Bertel Lund Hansen <gadekryds@lundhansen.dk>
Newsgroups dk.edb.programmering
Subject [Python] Ulogisk talformatering
Date Fri, 6 Apr 2018 19:08:52 +0200
Organization A noiseless patient Spider
Lines 34
Message-ID <1pyw3kvikpakm$.dlg@lundhansen.dk> (permalink)
Mime-Version 1.0
Content-Type text/plain; charset="iso-8859-1"
Content-Transfer-Encoding 8bit
Injection-Info reader02.eternal-september.org; posting-host="a7f4bd9267032d70b71cfbbbdbeca368"; logging-data="3649"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Um2uGHSUzlPGInRDtPHBJa/s4MvmHYd/PAJronZIhGg=="
User-Agent 40tude_Dialog/2.0.15.84
Cancel-Lock sha1:IqxPMvYP8X3HHmkNWOScE0MtkmA=
Xref csiph.com dk.edb.programmering:63

Show key headers only | View raw


Jeg mener at Python er ulogisk på et bestemt punkt, og det
bevirker at jeg er nødt til at skrive en subrutine der udfører
noget som burde være indbygget i sproget. Det drejer sig om
formatering af tal.

Hvis man stiller locale correct, så vil {:n} frembringe et tal
med korrekt decimalkomma og tusindseparator. Selv om n står for
"naturligt tal", så virker det dog alligevel på decimaltal - men
man kan ikke sætte antallet af decimaler!

En rutine, der skal lappe på det, ser sådan ud:

  	def number_format (nr,unit,dec=0):
  		if not dec:
  			temp="{:n}".format(int(nr)).replace(".","'")
  		else:
  			temp="{:.2f}".format(nr).replace(",","'").replace(".",",")
  		return temp+' '+unit

idet jeg dog har den særhed at jeg bruger apostrof som
tusindseparator i stedet for punktum.

Bemærk at den kun virker korrekt for tal med decimaler hvis
tallet er mindre end 1000. f-formatet sætter nemlig ikke
tusindseparator. Hvis rutinen skulle være helt generel, skulle
den kun bruge n-format og 'manuelt' evt. tilføje decimalkomma og
evt. 0'er og derefter afskære det korrekte antal decimaler.

Det ville være meget nemmere hvis man kunne skrive:

  	return "{:.2n}".format(nr).replace(".","'")

-- 
/Bertel

Back to dk.edb.programmering | Previous | Next | Find similar


Thread

[Python] Ulogisk talformatering Bertel Lund Hansen <gadekryds@lundhansen.dk> - 2018-04-06 19:08 +0200

csiph-web