Как исправить округление действительных чисел? - C (СИ)
Формулировка задачи:
// феномен действительных чисел.cpp: определяет точку входа для консольного приложения. /* Если мы вводим от 0.1 до 0.4 коп то мы чего то получаем на одну копейку меньше введенной,например ввели 9.03,а получили 9.02.А вот при вводе 9.05 мы и при выводе получим 9.05.Мне нужно,что бы при вводе любой дробной части например 9.01 и такое же выводилось. */ //Проверено в Code Bloks 16.01 //и VS 2013 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> int _tmain(int argc, _TCHAR* argv[]) { double a = 0.3 ; int rub=a; int cop=(a-rub)*100; printf("rub = %d\n",rub); printf("cop = %d\n",cop); system("pause"); return 0; }
Решение задачи: «Как исправить округление действительных чисел?»
textual
Листинг программы
// феномен действительных чисел.cpp: определяет точку входа для консольного приложения. /* Если мы вводим от 0.1 до 0.4 коп то мы чего то получаем на одну копейку меньше введенной,например ввели 9.03,а получили 9.02.А вот при вводе 9.05 мы и при выводе получим 9.05.Мне нужно,что бы при вводе любой дробной части например 9.01 и такое же выводилось. */ //Проверено в Code Bloks 16.01 //и VS 2013 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> int _tmain(int argc, _TCHAR* argv[]) { double a = 0.3 ; int rub=a; int cop=(a-rub)*100+0.000001; printf("rub = %d\n",rub); printf("cop = %d\n",cop); system("pause"); return 0; }
Объяснение кода листинга программы
- Создается переменная типа double с именем
a
и значением 0.3. - Переменная
a
приводится к целочисленному типу данных с именемrub
. - Переменная
cop
вычисляется как разница междуa
иrub
, умноженная на 100 и дополненная до 3 знаков после запятой. - Выводится значение переменной
rub
. - Выводится значение переменной
cop
. - Программа ожидает нажатия любой клавиши для продолжения работы.
- Возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д