Почему разница в полученном и предполагаемом ответе равна 1?
Вопрос Вопросов
Почему разница в полученном и предполагаемом ответе равна 1?
Пирожок в столовой стоит a рублей и b копеек. Определите, сколько рублей и копеек нужно заплатить за n пирожков.
Входные данные
Программа получает на вход три числа: a, b, n.
Выходные данные
Программа должна вывести два числа: стоимость покупки в рублях и копейках.
Мое решение:
import java.util.*;
public class Calc{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
in.useLocale(Locale.US);
double a = in.nextDouble();
int b = in.nextInt();
double c = in.nextDouble();
double d = b/100.;
double e = a+d;
double f = e*c;
int g = (int)(f/1.);
int h = (int)((f%1.)*100);
System.out.print(g + " ");
System.out.print(h);
}
}
Вход.:
2029
34
1848
Предполагаемый выход:
3750220 32
Полученный выход:
3750220 31
Я полагаю, что проблема где-то в диапазонах типов данных, или?
Ответы:
...
Ошибка при округлении и при работе % с плавающей точкой. (int)(f%1.)*100 . Здесь double вообще не нужен. Используйте целые числа, целочисленное деление и остаток от деления ( деление по модулю, оператор % )
|