Arraywerte komplett auf zwei Nachkommstellen runden

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Samson
Beiträge: 11
Registriert: So 27. Nov 2011, 17:16

Arraywerte komplett auf zwei Nachkommstellen runden

Beitrag von Samson »

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

u-boot
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

Beitrag von u-boot »

Mit einer Schleife das Array durchgehen lassen und mit Round runden.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Arraywerte komplett auf zwei Nachkommstellen runden

Beitrag von theo »

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)

Samson
Beiträge: 11
Registriert: So 27. Nov 2011, 17:16

Re: Arraywerte komplett auf zwei Nachkommstellen runden

Beitrag von Samson »

Danke für die schnellen Antworten. Wenn ich aber folgendes schreibe, dann spuckt er mir den Wert trotzdem mit 9 Nachkommastellen aus:

Code: Alles auswählen

g[i,1] := round((20+b/2+cos((i-1)*2*pi/n)*r)*100)/100;
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!

u-boot
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

Beitrag von u-boot »

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.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Samson
Beiträge: 11
Registriert: So 27. Nov 2011, 17:16

Re: Arraywerte komplett auf zwei Nachkommstellen runden

Beitrag von Samson »

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:

Code: Alles auswählen

g[1,1] := round(1,234676*100);
==> g[1,1] = 123
funktioniert! Dann nochmal durch 100 um auf 1,23 zu kommen...8 NKS! Hääh?

u-boot
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

Beitrag von u-boot »

P.S. ... habs gerade ausprobiert.

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)

u-boot
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

Beitrag von u-boot »

Samson hat geschrieben: Dann nochmal durch 100 um auf 1,23 zu kommen...8 NKS! Hääh?
Der Computer rechnet ja binär und mit Ungenauigkeiten, das darf man nicht vergessen.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Samson
Beiträge: 11
Registriert: So 27. Nov 2011, 17:16

Re: Arraywerte komplett auf zwei Nachkommstellen runden

Beitrag von Samson »

U-Boot ist mega- 8) ! 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

Antworten