АР
Артём Рудковский

язык СИ. НУЖНО ОКРУГЛИТЬ ЧИСЛО В БОЛЬШУЮ СТОРОНУ БЕЗ ФУНКЦИИ FLOOR ЗАРАНЕЕ СПАСИБО

Kalisa Joldubaeva
Kalisa Joldubaeva

#include
#include

float approximate_float_up(float); // округляет float до целого в большую сторону
double approximate_double_up(double); // округляет double до целого в большую сторону
float approximate_float_down(float); // округляет float до целого в меньшую сторону
double approximate_double_down(double); // округляет double до целого в меньшую сторону
float approximate_float_mantissa(float); // округляет float до целого в большую сторону если мантисса >= 0.5 и наоборот
double approximate_double_mantissa(double); // округляет double до целого в большую сторону если мантисса >= 0.5 и наоборот
int main() {
float x_float = 1.00000001f;
float y_float = 1.0000001f;
double x_double = 1.0000000000000001;
double y_double = 1.000000000000001;

printf("x-float = %.8f\n", approximate_float_up(x_float));
printf("y-float = %.8f\n", approximate_float_up(y_float));
printf("x-double = %.18Lf\n", approximate_double_up(x_double));
printf("y-double = %.18Lf\n\n", approximate_double_up(y_double));

printf("x-float = %.8f\n", approximate_float_down(1.99f));
printf("x-double = %.18Lf\n\n", approximate_double_down(1.99));

printf("x-float = %.8f\n", approximate_float_mantissa(1.499999f));
printf("y-float = %.8f\n", approximate_float_mantissa(1.5f));
printf("x-double = %.18Lf\n", approximate_double_mantissa(1.499999));
printf("y-double = %.18Lf\n", approximate_double_mantissa(1.5));

_getch();
return 0;
}
float approximate_float_up(float num) {
int temp = (int)num;
float rest = num - temp;
if (rest < 0) rest *= -1;
if (rest < 1e-7) num = (float)temp;
else num = (float)temp + 1;
return num;
}
double approximate_double_up(double num) {
int temp = (int)num;
double rest = num - temp;
if (rest < 0) rest *= -1;
if (rest < 1e-15) (double)num = temp;
else num = (double)temp + 1;
return num;
}
float approximate_float_down(float num) {
return (float)(int)num;
}
double approximate_double_down(double num) {
return (double)(int)num;
}
float approximate_float_mantissa(float num) {
int temp = (int)num;
float rest = (num - temp) * 10;
int val = (int)rest;
if (val >= 5) ++temp;
return (float)temp;
}
double approximate_double_mantissa(double num) {
int temp = (int)num;
double rest = (num - temp) * 10;
int val = (int)rest;
if (val >= 5) ++temp;
return (double)temp;
}

Елена !
Елена !

Стандартная функция ceil

K7
Kain 7

В бОльшую по модулю или просто в бОльшую?
Положительное число можно округлить, например, так:
((int) x)+1, если дробная часть числа х не равна нулю. А если равна, то прибавлять единицу не нужно.

Похожие вопросы
язык Си. Вводятся 4 числа. Найти сумму двух наименьших и разность самого большого и второго по величине числа.
Как на языке Си вычислить такую функцию?
Помогите составить функцию для нахождения совершенного числа в Си
Напишите плиз программу на Си#. Зарание спасибо
Подскажите, как вывести в языке СИ (не СИ++) число типа double в двоичном виде. Особенно спасибо если есть готовая прога
2 задачки по функциям язык си помогитее плиз
как на языке Си написать 2(n!)^2/(3n+1) заранее спасибо
Функция strstr и strcat без использования .Язык Си
Функция strstr и strcat без использования Язык Си
Нужно вывести все совершенные числа от 1 до 10000 Найдите ошибки. Язык си