Welche *.h Datei muss ich einbinden, dammit ich mit CodeVisionAVR die Round-Funktion nutzen kann? floor(...); wird gefunden und round(...); nicht!
Moin, ist in "tgmath.h" und in "math.h" vorhanden. Gruß
Erweiterungen nicht eingeschaltet? In C89 gab es diese Funktion noch nicht.
math.h hab ich eingebunden, aber die Funktion round() wird trotzdem nicht gefunden tgmath.h hab ich nicht
Wie kann ich die Funktion von Hand programmieren (float-Wert runden auf ganze Zahl)?
So wie du es von Hand auch machen würdest. Nachschauen was hinter dem Komma kommt und dann entsprechend entscheiden ob auf oder abrunden.
Die Header-Datei tgmath.h ist im AVR Studio 4.16 vorhanden kannst Du nach einer Registrierung kostenlos downladen: http://www.atmel.com/forms/software_download.asp?fn=dl_AvrStudio416Setup.exe Habe die tgmath.h mal angehängt, weiß aber nicht ob sie einzubinden geht.
Anfänger schrien: >Welche *.h Datei muss ich einbinden, dammit ich mit CodeVisionAVR die >Round-Funktion nutzen kann? Andreas P. (madmax2006) schrieb: >Die Header-Datei tgmath.h ist im AVR Studio 4.16 vorhanden... Frage: was passt hier nicht zusammen? Zusatzfrage: Was ist der Unterschied zwischen Headerdatei und libray, und wie spielen die beiden zusammen? Zusatzfrage 2: Was steht zum Thema round() in der CodeVisionAVR-Doku? Oliver
Anfänger schrieb: > Wie kann ich die Funktion von Hand programmieren (float-Wert runden auf > ganze Zahl)? Gast schrieb: > So wie du es von Hand auch machen würdest. > Nachschauen was hinter dem Komma kommt und dann entsprechend entscheiden > ob auf oder abrunden. Wozu so kompliziert.
1 | float a = 0.71243098; |
2 | float b = 5.24309823; |
3 | |
4 | int a_gerundet = (int)(a+0.5); /* = 1 */ |
5 | int b_gerundet = (int)(b+0.5); /* = 5 */ |
Gelingt zummindest meistens ;-)
> > Gelingt zummindest meistens ;-) @TO Probiers aber auch mit c = -1.2; :-)
Karl heinz Buchegger schrieb: > Probiers aber auch mit > > c = -1.2; > > :-) Jaha gut... bei negativen Zahlen dann halt minus 0.5 :-)
1 | #define ROUND(f) ( f > 0.0 ? ((int)(f+0.5)) : ((int)(f-0.5)) ) |
Verrate ihm doch nicht alles :-) Das Verstehen warum hier bei negative Zahlen eine andere Vorgehensweise notwendig ist, ist das zentrale Verständnis dessen, was bei einer Zuweisung double nach int wirklich passiert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.