procent z dwóch int?
Chcę dostać dwa inty, jeden podzielony przez drugi, aby uzyskać dziesiętny lub procentowy. Jak Mogę uzyskać procent lub dziesiętny z tych dwóch int? (Nie jestem pewien, czy to prawda.. Pewnie jestem daleko od tego...) na przykład:
int correct = 25;
int questionNum = 100;
float percent = correct/questionNum *100;
Tak myślałem, że dam radę, ale to nie zadziałało... Chcę dokonać dziesiętnego (jeśli istnieje) na procent ze 100 na przykład w tym przypadku jest to %25. jakieś pomysły?
Oto prawidłowy kod (dzięki Salvatore Previti!):
float correct = 25;
float questionNum = 100;
float percent = (correct * 100.0f) / questionNum;
(btw, robię projekt za pomocą tego programu do sprawdzania quizu, dlatego potrzebuję procentu lub dziesiętnego)
5 answers
Jeśli nie dodasz .0f
będzie traktowany tak, jakby był liczbą całkowitą, a dzielenie liczb całkowitych różni się znacznie od dzielenia zmiennoprzecinkowego:)
float percent = (n * 100.0f) / v;
Jeśli potrzebujesz liczby całkowitej z tego można oczywiście rzucić float
lub double
ponownie w integer.
int percent = (int)((n * 100.0f) / v);
Jeśli wiesz, że wartość n jest mniejsza niż 21474836 (czyli (2 ^ 31 / 100)), możesz zrobić wszystko używając operacji integer.
int percent = (n * 100) / v;
Jeśli masz NaN to dlatego, że nie możesz podzielić na zero z oczywiście... to nie ma sensu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-24 15:49:55
Dwie opcje:
Wykonaj podział po mnożeniu:
int n = 25;
int v = 100;
int percent = n * 100 / v;
Konwersja an int
na a float
przed podzieleniem
int n = 25;
int v = 100;
float percent = n * 100f / v;
//Or:
// float percent = (float) n * 100 / v;
// float percent = n * 100 / (float) v;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 21:23:50
Jeden z nich musi być pływakiem. Jednym z możliwych sposobów zapewnienia tego jest:
float percent = (float) n/v * 100;
W przeciwnym razie wykonujesz dzielenie liczb całkowitych, które obraca liczby . Ponadto powinieneś używać double
, chyba że istnieje dobry powód float
.
Następnym problemem, który napotkasz, jest to, że niektóre z Twoich procentów mogą wyglądać jak 24.999999999999% zamiast 25%. Jest to spowodowane utratą precyzji w reprezentacji zmiennoprzecinkowej. Będziesz musiał zdecydować, jak sobie z tym poradzić. Opcje obejmują DecimalFormat , aby "naprawić" formatowanie lub BigDecimal, aby reprezentować dokładne wartości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 21:37:28
float percent = (n / (v * 1.0f)) *100
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 21:22:34
Dobrze zrobić dziesiętny W procent można to zrobić,
float percentage = (correct * 100.0f) / questionNum;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-19 08:20:08