it-swarm-id.com

persentase dua int?

Saya ingin mendapatkan dua int, satu dibagi dengan yang lain untuk mendapatkan desimal atau persentase. Bagaimana saya bisa mendapatkan persentase atau desimal dari kedua int ini? (Saya tidak yakin apakah itu benar .. Saya mungkin jauh ...) misalnya:

int correct = 25;
int questionNum = 100;
float percent = correct/questionNum *100;

Ini adalah bagaimana saya pikir saya bisa melakukannya, tetapi tidak berhasil ... Saya ingin membuat desimal (jika ada) menjadi persen dari 100 misalnya dalam kasus ini adalah% 25. ada ide?

Ini kode yang benar (terima kasih kepada Salvatore Previti!):

float correct = 25;
float questionNum = 100;
float percent = (correct * 100.0f) / questionNum;

(btw, saya membuat proyek menggunakan ini untuk program pemeriksaan kuis itu sebabnya saya perlu persentase atau desimal)

50
Baruch

Jika Anda tidak menambahkan .0f itu akan diperlakukan seperti integer, dan pembagian integer jauh berbeda dari divisi floating point :)

float percent = (n * 100.0f) / v;

Jika Anda membutuhkan integer dari ini, Anda tentu saja dapat melemparkan lagi float atau double dalam integer.

int percent = (int)((n * 100.0f) / v);

Jika Anda tahu nilai n Anda kurang dari 21474836 (yaitu (2 ^ 31/100)), Anda dapat melakukan semuanya menggunakan operasi integer.

int percent = (n * 100) / v;

Jika Anda mendapatkan NaN adalah karena apa pun yang Anda lakukan, Anda tidak dapat membaginya menjadi nol tentu saja ... itu tidak masuk akal.

79

Dua pilihan:

Lakukan pembagian setelah perkalian:

int n = 25;
int v = 100;
int percent = n * 100 / v;

Konversikan int menjadi float sebelum membaginya

int n = 25;
int v = 100;
float percent = n * 100f / v;
//Or:
//  float percent = (float) n * 100 / v;
//  float percent = n * 100 / (float) v;
16
Eric

Salah satunya harus menjadi pelampung masuk. Salah satu cara yang mungkin untuk memastikan itu adalah:

float percent = (float) n/v * 100;

Jika tidak, Anda melakukan divisi integer, yang memotong angka . Selain itu, Anda harus menggunakan double kecuali ada alasan yang bagus untuk float.

Masalah berikutnya yang akan Anda temui adalah bahwa beberapa persentase Anda mungkin terlihat seperti 24,9999999999999%, bukannya 25%. Hal ini disebabkan oleh kehilangan presisi dalam representasi floating point. Anda harus memutuskan bagaimana menghadapinya juga. Opsi termasuk DecimalFormat untuk "memperbaiki" format atau BigDecimal untuk mewakili nilai yang tepat.

3
Ryan Stewart

Nah untuk membuat desimal menjadi persen Anda bisa melakukan ini,

float percentage = (correct * 100.0f) / questionNum;
0
Shiva
float percent = (n / (v * 1.0f)) *100
0
Francisco Spaeth