Перейти к содержимому

C как округлить число до сотых

  • автор:

Округление

Округление в C++ довольно часто требуется для выполнения различных задач. Существует большое количество вариантов округления, в зависимости от необходимого значения. Как и большинство мат. операций, они находятся в библиотеке , а также более старой библиотеке .

Самые распространенные – это функции round(), ceil(), floor() и trunc(). Если первая выполняет математически правильное округление, то есть к ближайшему целому, а 0,5 к более дальнему от 0, то ceil() округляет в сторону большего, а floor() — в сторону меньшего. Последняя функция trunc() скорее не округление, а простое отбрасывание дробной части. Продемонстрируем на примере:

C как округлить число до сотых

Регистрация: 13.02.2011

Сообщений: 82

C++ Округление до десятых

Здравствуйте. Задача у меня такая: вывести вещественное число, окугленное до десятых долей(Например: 12.12345 —> 12.1). Работаю в стареньком компиляторе Microsoft Visual C++ 6.0, в консольном режиме

Пробовал сделать так:

#include #include #include void main () //начало главной программы float n=12.12345;//переменная для натурального числа printf (" %f ", round(n,-1) );//округляем и выводим getch ();//для паузы завершения >//завершение главной программы

Ругается на «round». Как правильно прописать?

Последний раз редактировалось Stilet; 06.03.2011 в 11:56 .

Деление чисел C++ для начинающих. Округление числа

На этом блоге постоянно находятся посетители. Значит имеет смысл продолжать его вести. Итак в C++ для начинающих часто требуются разные вычисления. Я уже писал. Статья арифметика в borland c++ 3.1 Там не написал одного момента. Я не знал как округлить число. Что ж. Надо добивать эту информацию. Так как я обещал вначале, что буду вести что-то вроде обучения в Реал Тайм, то не имеет смысла туда дописывать этот кусочек полезного.

Округлить число в C++ можно так

#include //Эта директива позволяет получать округленное число

int main ()
clrscr ();
double x = floor ( 7 / 3 )/ 100 ; //Присваиваем в x число равное 7/3 и округляем его до сотых
cout getch (); //Ожидаем нажатие любой клавиши
return 0 ; //Заканчиваем программу и выходим из функции
>

Вот так легко округляется число до определенного числа знаков после запятой
Маленькое, но очень полезное в С++ для начинающих дополнение.

Для округления числа достаточно подключить директиву math.h ииспользовать функцию floor В скобках мы указываем наше вычисление, которое хотим округлить, а после скобок через дробь то значение, на которое округляем.

Та же самая запись, что и выше, но для наглядности Начинающим в C++ может очень пригодится
int main ()
clrscr ();
int a = 7 , b = 3 ;
double x = floor ( a / b )/ 100 ; //Присваиваем в x число равное 7/3 и округляем его до сотых
cout getch (); //Ожидаем нажатие любой клавиши

return 0 ; //Заканчиваем программу и выходим из функции

================
Было рассмотрено стандартное округление, которое знакомо нам со школы. Но есть и другие типы округлений

1) Округление до наименьшего целого, не меньше чем округляемое число
ceil ( x ) x- это наше число
ceil ( 5.01 ) ; Результат округления 6
ceil ( 5.9 ); Результат округления 6

2) Округление до наибольшего целого, не больше чем округляемое число
floor ( x ) – x это наше число
функция floor ( x ) отбрасывает дробную часть. Дробную часть можно сохранить до нужных долей. Этот пример округления был рассмотрен выше

C как округлить число до сотых

Профиль
Группа: Экс. модератор
Сообщений: 4067
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164

Округление чисел
Используя функцию, приведённую ниже, можно округлить число типа double с требуемой точностью. Округлять можно по двум правилам:
1) то, чему нас учили в школе: если округляем до двух знаков после запятой, то сотые доли либо увеличиваются на 1, либо остаются без изменений — в зависимости от значений тысячных (если 4 тысячных — то оставляем сотые как есть, если больше 5-ти — увеличиваем сотые на 1, если 5 — то смотрим десятитысячные), все цифры правее сотых — отбрасываются;
2) простое отбрасывание всех цифр, правее указанной (если округляем до сотых, то тысячные и т.п. — отбрасываются).

Для первого варианта округления, параметр nType должен быть равен ROUND_UP, для второго варианта — ROUND_TRIM. Параметр nPrecis задаёт количество знаков после запятой (номер цифры после запятой, до которой округляется число).

Код
#include «math.h»

#define ROUND_UP 1
#define ROUND_TRIM 2

const double Two=2, Five=5, Ten=10;
const double MaxPrecis=pow(10, 16);

[b]double Round(double Value, int nPrecis, int nType=ROUND_UP)[/b]
if(nPrecis > 16 || !nPrecis) return Value;
if(Value == 0) return Value;

_asm
finit
fstcw wTmp
mov ax, wTmp
or ax, 0000110000000000b // RC=11 — trimming
cmp nType, ROUND_UP
jne m1
and ax, 1111001111111111b // RC=00 — upper
m1: mov wTmp, ax
fldcw wTmp

fld Value
mov ecx, nPrecis
push ecx
m2: fmul Ten
loop m2

pop ecx
m3: fdiv Ten
loop m3
fstp Value
>

Проверка «целое ли число»
Следующая функция возвращает true, если число целое (не имеет знаков правее запятой), и false — если дробное. Отличие данной функции от простого выражения ((double)(int) fValue) == fValue ? true:false состоит в том, что она позволяет работать с числами, бОльшими чем позволяет формат int (например, не зная точно, больше число по модулю, чем 2 триллиона, или нет — сложно определить, сработает ли выражение приведенное выше, требуется ещё рад проверок).

Итак, функция для проверки, целое или дробное число Value:

Код
#include «math.h»

[b]bool IsRounded(double Value)[/b]
bool bResult = true;
short wTmp;
_asm
finit

fstcw wTmp
mov ax, wTmp
or ax, 0010110000000000b // RC=11 — trimming, PC=11 — max precis
mov wTmp, ax
fldcw wTmp

fld Value
fld Value
frndint
fsub
fxam

fstsw ax
sahf
je end
mov bResult, 0
jmp end

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *