Fehler wenn ich round benutze
-
Die 0 kommt aus der Rechnung, hier der Code
double recentPspVolume; recentPspVolume = (recentVolume/255)*53;Warum ist recentPspVolume immer 0?
-
Es ist zum Mäusemelken! Gebt euch das:
int recentVolume; double recentPspVolume; char send_buffer[192]; recentVolume = SendMessage(plugin.hwndParent, WM_WA_IPC, -666, IPC_SETVOLUME); // Holt sich die Lautstärke von Winamp wsprintf(send_buffer, "Volume is now %i", recentVolume); MessageBox(plugin.hwndParent,send_buffer,"",MB_OK); // MsgBox; Asugabe: "Volume is now 82" recentPspVolume = (recentVolume/255)*53; wsprintf(send_buffer, "PSP-volume is now %d", recentPspVolume); MessageBox(plugin.hwndParent,send_buffer,"",MB_OK); // // MsgBox; Asugabe: "PSP-volume is now 0"Ich kapier's nicht
-
(int / int) * int = int

Schreib doch mal die Rechnung so:
recentPspVolume = (recentVolume / 255.0) * 53.0;Das .0 bewirkt, dass die Zahl nicht als int, sondern als double angesehen wird. Wenn du sie als float möchtest, dann müsstest du folgendes machen:
(recentVolume / 255.0f) * 53.0f;Das .0f bewirkt, dass die Zahl als float angesehen wird

Grüssli
-
double recentPspVolume = (static_cast<double>(recentVolume) / 255.0) * 53.0;?
-
Super! Das hat mich schon mal nen entscheidenden Schritt weitergebracht! Danke!
Aber ich krieg noch fehler:
error C2065: 'static_cast': nichtdeklarierter Bezeichner
error C2059: Syntaxfehler: 'Typ'
-
Hmm programmierst du in C oder was? Wenn ja dann ersetz static_cast<double>(recentVolume) durch (double)recentVolumn

-
Hm, google hilft mir nicht wirklich weiter. Was genau ist der unteschied zwischen nem static_cast und nem einfachen typecast?
Edit: Crosspost

-
naja static_cast hast du unter C nicht zur verfügung ... da musst du nen C-Style-Cast nehmen ...
double recentPspVolume = (((double)recentVolume) / 255.0) * 53.0;
-
Ok, danke für eure Hilfe. Eine letzte Frage noch (und ja, haut mich ruhig für mein Newbie-tum). Ich will das Double in eine char[256] Variable packen. Dafür mach ich
wsprintf(send_buffer, "PSP-volume is now %lf", recentPspVolume);aber ich bekomm nur "PSP-volume is now f" raus. Wie stell ich's richtig an?
-
Auch mit
wsprintf(send_buffer, "PSP-volume is now %.2f", recentPspVolume);
und
wsprintf(send_buffer, "PSP-volume is now %2.10f", recentPspVolume);
nur
"PSP-volume is now f"
Ich versteh's nicht
edit: Jetzt hab ich folgendes versucht:
char *send_buffer; int pspVolumeDecPointPos, pspVolumeDecPointSign; recentPspVolume = round(13.6); send_buffer = _fcvt(recentPspVolume, 1, &pspVolumeDecPointPos, &pspVolumeDecPointSign);Und jetzt kackt er in der Laufzeit mit der Meldung "The variable 'send-buffer' is being used without being defined"