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/
Gast
#4715072
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.
Gast
#4715101
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
Gast
#4716421
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Gast
#4716469
Warum castest du nach float pointer? dasgleiche in sprintf?
Gast
#4716484
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.
Gast
#4716495
korrektur, int variable ist initialisiert gewesen,
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.