Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Округление числа


Автор: Гость_dmitry303 13.4.2005, 07:24
Подскажите пожалуйста как округлить число до определенного знака после запятой для использования этого числа в математических операциях.
Я использую VC6++

Автор: DENNN 13.4.2005, 10:31
например умножить на 100..... привести к (long) а затем разделить обратно
smile

Автор: InfMag 14.4.2005, 20:24
Гость_dmitry303
А в VC разве нет функции round()?

Автор: Alastis 15.4.2005, 06:30
Цитата(InfMag @ 14.4.2005, 20:24)
Гость_dmitry303
А в VC разве нет функции round()?

такой функции в VC нет... до нужного знака после запятой так вроде и округляют, как DENNN написал

Автор: Dov 15.4.2005, 19:59
Цитата(InfMag @ 14.4.2005, 19:24)
А в VC разве нет функции round()?

Цитата(Alastis @ 15.4.2005, 05:30)
такой функции в VC нет...

Так давайте сами напишем, вот прототип:
Код
double round(double value, unsigned int n);
где n - число знаков после запятой.

Ждём предложений...

з.ы. Тута пару строчек всего, имхо.

Автор: Alastis 16.4.2005, 10:43
Цитата(Dov @ 15.4.2005, 19:59)
Ждём предложений...

Выбирайте, что больше нравитсяsmile

1. До нужного знака после запятой:

Код

double round(double value, unsigned int n)
{
    double p = pow(10.0, (double)n);
    return floor(value * p + 0.5) / p;
}



2. С нужной точностью:

Код

double round2(double value, double accuracy)
{
    return floor(value / accuracy + 0.5) * accuracy;
}

Автор: Dov 16.4.2005, 11:35
Первая - хорошо!!!
А что делает вторая? smile

Автор: Alastis 16.4.2005, 12:28
Цитата(Dov @ 16.4.2005, 11:35)
А что делает вторая? smile

round2(value, 0.1) - с точностью до 0.1
round2(value, 0.01) - с точностью до 0.01
ну и т.д.smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)