# XSLT - Addieren / Subtrahieren



## mtk-flo (14. März 2007)

Hallo, ich addiere und subtrahiere verschiedene Werte in meinem XSLT.

Die werte kommen aus dem XML und sehen wie folgt aus:
12.53
13432.99
etc...

also immer mit zwei nachkommastellen.

im xslt sieht meine rechnung so aus:

```
//XML/Wert1 + //XML/Wert2 + sum(//XML/foo/bla) + sum(//XML/moep/blub) - sum(//XML/Wertepaar1/wert3)
```
 
ich bekomm aber am ende der rechnung eine zahl mit mehreren nachkomma stellen raus ( 5680.620000000001 ), aber wieso ?
woher kommt die letzte 1 ?
kann ich auf die 2. nachkomma stelle runden ?


----------



## deepthroat (14. März 2007)

Hi.

Die Zahlenwerte werden (wie bei den meisten Programmiersprachen auch) als Gleitkommazahlen gespeichert. Gleitkommazahlen sind inhärent ungenau - man kann nicht erwarten das man genaue Resultate bekommt wenn man mit solchen Zahlen rechnet (manche "einfache" Dezimalbrüche lassen sich nicht mal ganz genau in eine Gleitkommazahl umwandeln).

Es gibt eine round() Funktion in XSLT. Die Funktion rundet zur nächstgelegenen ganzen Zahl. Wenn du auf 2 Nachkommstellen runden willst, mußt du nur dein Ergebnis erst mit 100 multiplizieren, dann mit round() runden und anschließend wieder durch 100.0 teilen.

Gruß


----------

