Arraywerte komplett auf zwei Nachkommstellen runden
Arraywerte komplett auf zwei Nachkommstellen runden
Guten Abend zusammen!
Hat jemand eine Idee wie ich mit wenig Aufwand alle in meinem statischen Array gespeicherten Werte auf zwei Nachkommastellen runden kann?
Grüße
Hat jemand eine Idee wie ich mit wenig Aufwand alle in meinem statischen Array gespeicherten Werte auf zwei Nachkommastellen runden kann?
Grüße
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: Arraywerte komplett auf zwei Nachkommstellen runden
Mit einer Schleife das Array durchgehen lassen und mit Round runden.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
Re: Arraywerte komplett auf zwei Nachkommstellen runden
Bzw. mit RoundTo http://www.freepascal.org/docs-html/rtl ... undto.html" onclick="window.open(this.href);return false;
z.B. RoundTo(2.323322,-2)
z.B. RoundTo(2.323322,-2)
Re: Arraywerte komplett auf zwei Nachkommstellen runden
Danke für die schnellen Antworten. Wenn ich aber folgendes schreibe, dann spuckt er mir den Wert trotzdem mit 9 Nachkommastellen aus:
das macht doch keinen Sinn, vor allem weil wenn ich die Division durch 100 am Ende weglasse mein Ergebnis da steht nur das Komma muss noch zwei nach links. Daher korrekter Weise *gerundete Zahl*/100...aber dann bumm wieder 9 NKS!
Code: Alles auswählen
g[i,1] := round((20+b/2+cos((i-1)*2*pi/n)*r)*100)/100;
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: Arraywerte komplett auf zwei Nachkommstellen runden
Runden und Ausgeben sind ganz unterschiedliche Dinge.
Kommen denn gerundete Zahlen bei dir raus oder sind hinter den ersten beiden Kommastellen nur noch Nullen bzw. nur noch Neunen ?
Wenn nur gekürzte Ausgabe auf zwei Nachkommastellen gewünscht, kann Format oder Formatfloat helfen.
Kommen denn gerundete Zahlen bei dir raus oder sind hinter den ersten beiden Kommastellen nur noch Nullen bzw. nur noch Neunen ?
Wenn nur gekürzte Ausgabe auf zwei Nachkommastellen gewünscht, kann Format oder Formatfloat helfen.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
Re: Arraywerte komplett auf zwei Nachkommstellen runden
Aber beim teilen durch hundert tritt der Fehler auf, das is das Problem. Die gerundeten Werte schreibt er mir korrekt ins Array nur die Division durch hundert mag er nich.
Beispiel:
funktioniert! Dann nochmal durch 100 um auf 1,23 zu kommen...8 NKS! Hääh?
Beispiel:
Code: Alles auswählen
g[1,1] := round(1,234676*100);
==> g[1,1] = 123
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: Arraywerte komplett auf zwei Nachkommstellen runden
P.S. ... habs gerade ausprobiert.
Eventuell hilft dir auch einfach eine Umstellung von single zu double.
Hab mein kleines TestProjekt dazu mal angehängt.
Eventuell hilft dir auch einfach eine Umstellung von single zu double.
Hab mein kleines TestProjekt dazu mal angehängt.
- Dateianhänge
-
ArrayRounding.zip
- (2.3 KiB) 77-mal heruntergeladen
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: Arraywerte komplett auf zwei Nachkommstellen runden
Der Computer rechnet ja binär und mit Ungenauigkeiten, das darf man nicht vergessen.Samson hat geschrieben: Dann nochmal durch 100 um auf 1,23 zu kommen...8 NKS! Hääh?
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
Re: Arraywerte komplett auf zwei Nachkommstellen runden
U-Boot ist mega-
! hehe
Ich danke dir vielmals...es lag daran das die Arrayeinträge als Single-Typ definiert waren. Auf einmal klappts auch mit dem roundto!
Super dass du das miniprogramm hochgeladen hast. Viele Grüße

Ich danke dir vielmals...es lag daran das die Arrayeinträge als Single-Typ definiert waren. Auf einmal klappts auch mit dem roundto!
Super dass du das miniprogramm hochgeladen hast. Viele Grüße