Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Аналог RoundTo / 6 сообщений из 6, страница 1 из 1
11.09.2007, 17:38:22
    #34792196
inspirion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог RoundTo
Подскажите пож. существует ли в "С" в стандартных библиотеках аналог паскалевой функции RoundTo(bouble,n) где n точность округления.

Заранее спасибо.
...
Рейтинг: 0 / 0
11.09.2007, 17:54:16
    #34792262
1211212
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог RoundTo
Какой "С"?
...
Рейтинг: 0 / 0
11.09.2007, 17:57:01
    #34792274
inspirion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог RoundTo
Суть в следующем мы переводим код функции из под паскаля
function MultFloat(var Value,Value2: Double;var RoundToNearest:integer): Double;
begin
result :=Value*Value2;
Result := RoundTo(result,RoundToNearest);
end;

нужно аналог на "с", который можно было бы собрать как под Windows так и под Линукс, так что скореевсего подходит "math.h", но там стандартной функции нет на сколько я понял
...
Рейтинг: 0 / 0
11.09.2007, 18:00:08
    #34792285
1211212
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог RoundTo
В math.h -> ceil, floor -> дальше сам.
...
Рейтинг: 0 / 0
11.09.2007, 18:51:26
    #34792505
teras
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог RoundTo
Все зависит от области применения. Например, можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#include <math.h>
double round_to(double v, int digits)
{
	double m = pow( 10 , digits);
	double x = v * m;
	double r = fabs(fmod(x,  1 ));

	if (r <  0 . 5 )
		return floor(x) / m;
	else
		return (floor(x) + (v <  0  ? - 1  :  1 )) / m;
}
...
Рейтинг: 0 / 0
11.09.2007, 19:00:11
    #34792541
teras
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог RoundTo
Хотя с отрицательными числами это не будет работать - нужно менять floor на ceil. Проще (точнее - читабельнее), взять модуль числа, а знак обработать отдельно. И заменить "return (floor(x) + (v < 0 ? -1 : 1)) / m" на "return ceil(x) / m".
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Аналог RoundTo / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]