Ошибка при изменении типа данных - C (СИ)
Формулировка задачи:
Добрый день.
Возникла следующая задача. Я бы даже сказал загадка.
В программе использовал (int) - операцию перевода числа из типа с плавающей точкой в тип целого числа.
В ходе тестирования оказалось, что выражение:
(int)(2.3 * 100) дает ответ 229, а не 230 как по моему мнению должно было бы быть.
При этом так же не правильные ответы дают выражения с константами (2.32, 2.28, 2.26).
Во всех остальных случаях (из тех которые я тестировал) ответы были правильные, то есть соответствовали моему представлению.
(int)(2.2 * 100) == 220
(int)(2.4 * 100) == 240
(int)(20.3 * 100) == 2030 и т.д.
Если у кого нибудь есть этому объяснение буду признателен.
Решение задачи: «Ошибка при изменении типа данных»
textual
Листинг программы
scanf ("%d.%d", &a, &b);
Объяснение кода листинга программы
В данном коде используется функция scanf для ввода двух чисел с плавающей точкой в переменные a и b. Список действий:
- Вводится число типа int в переменную a.
- Вводится число типа int в переменную b. Пример: Введите два числа с плавающей точкой: 1.5 2.7 a = 1 b = 2
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д