Отбросить дробную часть от числа типа double - C (СИ)
Формулировка задачи:
В общем задача такова:
ввожу десятизначное положительное число типа double с клавиатуры.
нужно сделать проверку, чтоб это число было без дробной части.
тоесть если например: 5555555555.354 - чтоб выдавал ошибку и повторить ввод.
вот код:
библиотеку math.h включил
пишу на dev c++
Заранее спасибо!
double y;
do
{
e[i].nom=-1;
fflush(stdin);
scanf("%lf",&e[i].nom);
y=e[i].nom-floor(e[i].nom);
if (e[i].nom<1000000000.0||e[i].nom>9999999999.0||y>0)
printf(" Неверный ввод. Повтори, пожалуйста: ");
}
while((e[i].nom<1000000000.0)||(e[i].nom>9999999999.0||y>0);Решение задачи: «Отбросить дробную часть от числа типа double»
textual
Листинг программы
double d;
double i;
do {
scanf("%lf",&d);
if (modf(d,&i)!=0) {
puts("Wrong!");
}
else
break;
} while (1);
puts("Ok!");
Объяснение кода листинга программы
- Объявляются две переменные типа double: d и i.
- Запускается бесконечный цикл do-while(1).
- В каждой итерации цикла происходит следующее:
a. С помощью функции scanf() в переменную d считывается число типа double.
b. С помощью функции modf(d,&i) дробная часть числа d отбрасывается и сохраняется в переменной i.
c. Если дробная часть числа не равна нулю, то выводится сообщение
Wrong!и ничего больше не происходит. d. Если дробная часть числа равна нулю, то происходит выход из цикла с помощью оператора break. - После окончания цикла выводится сообщение
Ok!.