Hallo eine simple Funktion und ich habe keine Ahnung wo das Problem liegt period = 218 f = 1000 / period; sprintf (strBuff ," Hz: %.3f", f); sollte eigentlich Hz: 4,587 ausgeben ich bekomme aber immer eine gerade Zahl wie Hz: 4.000 http://www.cplusplus.com/reference/cstdio/printf/
Martin M. schrieb: > period = 218 > f = 1000 / period; wenn du uns ein vollständiges Programm geigt hättest, könnte man besser helfen. Vermutlich ist period ein int - damit wird das eine ganzzahlige Division.
Integer Division What is the behavior of integer division in C? http://stackoverflow.com/questions/3602827/what-is-the-behavior-of-integer-division-in-c#3602857
Martin M. schrieb: > Hallo eine simple Funktion > und ich habe keine Ahnung wo das Problem liegt > > period = 218 > f = 1000 / period; > > sprintf (strBuff ," Hz: %.3f", f); > > sollte eigentlich Hz: 4,587 ausgeben > ich bekomme aber immer eine gerade Zahl wie Hz: 4.000 > > http://www.cplusplus.com/reference/cstdio/printf/ Nein - du bekommst gar nichts angezeigt mit deinem Code 1. fehlt da der type von strBuff, f und bei dieser zeile auch was > period = 218 richtig muss es lauten period = 218 ; 2. period und f sind vermutlich ganze Zahlen? wenn du ein float haben möchtest, so nennt man die Kommazahlen musst du zumindest nach float casten casten steht im Handbuch ich bin ja nicht so: du kannst das mal probieren:
1 | char strBuff[30] = ""; |
2 | int period = 218; |
3 | float f = 0; |
4 | |
5 | f = 1000 / ( float *) period; |
6 | |
7 | sprintf (strBuff ," Hz: %.3f", (float *) f); |
Das ist Rezept für sporadisches Bum-Bam. Das Bitmuster ist nämlich uninitialisiert Das will man sicher nicht als Adresse verstanden wissen. Ich kann euch wärmstens Python empfehlen.
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.