Prozentsatz berechnen - Ergebnis immer 0
-
Warum erhält die Variable Prozent immer 0 als Ergebnis?
for (int x = 0; x < systemlaufwerke; x++) { // <-- HDD Infos auslesen System::IO::DriveInfo ^info = gcnew System::IO::DriveInfo (HD_A_drives[x]); System::Int64 freierspeicher = info->TotalFreeSpace; System::Int64 gesammterspeicher = info->TotalSize; System::Int64 prozent = (freierspeicher / gesammterspeicher) * 100;
-
Zuerst wird freierSpeicher / gesamterSpeicher berechnet. Das ist 0,irgendwas. Da es sich um eine Ganzzahldivision handelt, wird der Nachkommateil weggeworfen. Also freierSpeich / gesamterSpeicher = 0. Multipliziert mit 100 macht immer noch 0.
Lösung 1: Zuerst freierSpeicher mit 100 multiplizieren und dann erst durch gesamterSpeicher teilen. Problem: Speicherüberlauf! Also
Lösung 2: Eine der beiden Zahlen der Division in eine Gleitkommazahl umwandeln, sodass das Ergebnis eine Gleitkommazahl wird:
prozent = static_cast<Int64>(static_cast<double>(freierSpeicher) / gesamterSpeicher * 100 + 0.5);
-
Danke dir. Hab schon überlegt ob ich die Sonderschule nochmal besuche