Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2013, 22:30   #1
zzydd
 
Регистрация: 01.05.2012
Сообщений: 6
По умолчанию Ограничение числа знаков после запятой.

Здравствуйте. Подскажите пожалуйста, как можно ограничить при вычислениях число знаков после запятой в переменных типа double? Или как округлить значения получаемые в вычислениях до нужного знака?

Последний раз редактировалось zzydd; 18.07.2013 в 22:33.
zzydd вне форума Ответить с цитированием
Старый 18.07.2013, 22:44   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Посмотрите функцию RoundTo.
type_Oleg вне форума Ответить с цитированием
Старый 18.07.2013, 23:38   #3
zzydd
 
Регистрация: 01.05.2012
Сообщений: 6
По умолчанию

А можно как-то централизованно это сделать, чтоб после каждой переменной не писать эту функцию?
zzydd вне форума Ответить с цитированием
Старый 19.07.2013, 00:37   #4
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Держи до нужного знака.
Код:
#include <stdio.h>



// параметр n - означает, ограничение знаков после запятой
inline double trunc(double d, int n) {
        double k1, k2;
        double a = (double) (__int64)d;
        double b = d - a;

        if(! n)
                return a;
        if(b == 0.0)
                return d;

        k1 = k2 = 1.0;
        while(n--) {
                k1 *= 10.0;
                k2 *= 0.1;
        }
        b *= k1;
        return (a + (double)(__int64)b * k2);
}



int main(void) {
        const double n = 10e+9 + 0.987654;

        printf("%lf\n", n);
        for(int i = 5; i > 0; i--)
                printf("%lf\n", trunc(n, i));

        printf("\n\t%lf\n\t%lf\n", -9.123456, trunc(-9.123456, 3));
        getchar();
        return 0;
}
Nuklon вне форума Ответить с цитированием
Старый 20.07.2013, 20:06   #5
VOVA-74
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 16
По умолчанию Ограничение числа знаков после запятой

G=((Y+P)/2);
Y1 = SimpleRoundTo( G,-5);
String str3 = FormatFloat("0.00000", G );
Y1 = FormatFloat("0.0000", G).ToDouble();


Работает прекрасно. Лучше всего посмотрите Архангельского А.Я. -Справочное пособие.
VOVA-74 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество знаков после запятой ольгаг C++ Builder 5 19.03.2012 17:23
Количество знаков после запятой Matrix6993 Общие вопросы Delphi 5 01.02.2012 01:42
как отрегулировать кол-во знаков после запятой, при выведении числа(delphi) photozaz Общие вопросы Delphi 11 10.02.2011 21:20
Как ограничить количество вводимых знаков числа после запятой. proggramer Общие вопросы C/C++ 1 24.03.2010 03:15
Ограничение знаков после запятой,StringGrid Gorin Компоненты Delphi 9 20.09.2007 16:10