Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Eine Zahl runden
V!P3R - Di 24.03.09 20:30
Titel: Eine Zahl runden
Hi,
Ich hab eine zahl, zum beispiel 3,14159265 (die steht jez in einem Edit) und möchte diese jetz auf drei nachkommastellen runden.
wie mache ich das?
MfG
jakobwenzel - Di 24.03.09 20:33
Guck dir FloatToStrF und/oder Format an.
jakobwenzel - Di 24.03.09 21:00
Jo, das rundet die Zahl, aber es kann wegen der Ungenauigkeit beim Speichern von Fließkommazahlen dazu kommen, dass dann einige 0en ausgegeben werden und dann ab der 10. Nachkommastelle Zahlenmüll anfängt.
GlasshouseManor - Do 26.03.09 23:32
Zum Runden auf 3 Nachkommastellen nimmst Du Deine Zahl *1000, machst ein TRUNC und dividierst wieder durch 1000. Dann hast Du den Zahlenmüll wech.
Xentar - Do 26.03.09 23:36
Edit: Ähh, hab mich vertan, sorry.
Boldar - Do 26.03.09 23:37
Dann ist aber nicht gerundet:
Quelltext
1: 2: 3:
| 2,8888888~2,889 und nicht 2,8888888~2,888 |
P-A-L - Do 26.03.09 23:51
Boldar hat folgendes geschrieben : |
Dann ist aber nicht gerundet:
Quelltext 1: 2: 3:
| 2,8888888~2,889 und nicht 2,8888888~2,888 | |
Dann macht man halt
Delphi-Quelltext
1:
| zahl := ( trunc(round(zahl*1000)) / 1000 ); |
GTA-Place - Fr 27.03.09 00:04
Oder man nimmt die fertige Funktion RoundTo, wie oben schon verlinkt, dann kann man sich diese umständliche Version sparen.
alzaimar - Fr 27.03.09 08:29
Da nicht alle Gleitkommazahlen exakt abzubilden sind, ist es ergo auch unmöglich jede Zahl mit z.B. zwei Nachkommastellen in einem Double exakt abzubilden. Das ist so und lässt sich nicht ändern. Am Besten, man ignoriert diesen umstand beim rechnen und rundet nur entsprechend, um die Zahl darzustellen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!