Reputation: 11
printf("Golongan Rumah Tangga A1\n");
printf("Masukan pemakaian \n");
scanf("%f", &pemakaian);
if ( pemakaian <= 10 ) {
tarif = 1.780;
printf("Tarif : %.3f\n", tarif);
}
else if ( pemakaian > 11 || pemakaian <= 20 ) {
tarif = 2.060;
printf("Tarif : %.3f\n", tarif);
}
when I input 2 the result is still 2,060
which should be 1,780
this is my full code
#include <stdio.h>
int main() {
int klaster, golongan, listrik, pemakaian;
double berm, tarif;
printf("Program air\n");
printf("Pilih klaster\n ");
printf("1. Rumah Tangga\n");
printf("2. Usaha\n");
scanf("%d", &klaster);
if (klaster == 1) {
printf("pilih golongan\n");
printf("1. Subsidi\n");
printf("2. tanpa subsidi\n");
scanf("%d", &golongan);
if( golongan == 1) {
printf("Masukan daya listik\n");
scanf("%d", &listrik);
printf("Masukan lebar berm\n");
scanf("%f", &berm);
if (listrik == 450 && berm <=3.99 ) {
printf("Golongan Rumah Tangga A1\n");
printf("Masukan pemakaian \n");
scanf("%f", &pemakaian);
if ( pemakaian <=10 && pemakaian > 0 ) {
tarif = 1.780;
printf("Tarif : %.3f\n", tarif);
}
else if ( pemakaian > 11 ) {
tarif = 2.060;
printf("Tarif : %.3f\n", tarif);
}
}
else if (listrik == 900 && berm <=3.99 ) {
printf("Golongan Rumah Tangga A1\n");
printf("Masukan pemakaian \n");
scanf("%f", &pemakaian);
if ( pemakaian <= 10 ) {
tarif = 1.780;
printf("Tarif : %.3f\n", tarif);
}
else if ( pemakaian > 11 || pemakaian <= 20 ) {
tarif = 2.060;
printf("Tarif : %.3f\n", tarif);
}
else if ( pemakaian > 20 ) {
tarif = 5.880;
printf("Tarif : %.3f\n", tarif);
}
}
}else {
printf("Input yang benar woiii");
}
}else{
printf("Input yang benar woiii");
}
}
Upvotes: 0
Views: 64
Reputation: 1388
When reading a float with scanf("%f", &pemakaian)
(notice the %f
flag), a binary value of 0b01000000000000000000000000000000 is read for a decimal input 2, which later is stored in an int variable pemakaian as a 4194304 decimal.
You can find out more about the binary format of the float numbers in C here.
The easiest solution for this is to either read an integer with scanf("%d", &pemakaian)
(notice the %d
flag), or initialize pemakaian as a float.
Upvotes: 1