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

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

нужно аналог на "с", который можно было бы собрать как под Windows так и под Линукс, так что скореевсего подходит "math.h", но там стандартной функции нет на сколько я понял
...
Рейтинг: 0 / 0
Аналог RoundTo
    #34792285
1211212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В math.h -> ceil, floor -> дальше сам.
...
Рейтинг: 0 / 0
Аналог RoundTo
    #34792505
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все зависит от области применения. Например, можно так:
Код: 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
Аналог RoundTo
    #34792541
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя с отрицательными числами это не будет работать - нужно менять floor на ceil. Проще (точнее - читабельнее), взять модуль числа, а знак обработать отдельно. И заменить "return (floor(x) + (v < 0 ? -1 : 1)) / m" на "return ceil(x) / m".
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Аналог RoundTo
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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