На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> double -> int
    Подскажите плиз, как красиво округлить double до int'a?
    Я бы поискал по форуму, но тут чего-то поиск не работает... (или у меня и-нет глючит)
      ExpandedWrap disabled
         
        double d = 12.4523;
        int i = (int)(d + 0.5);

      Красиво, не красиво - зато по-правилам...
        Цитата
        fatalist, 25.01.04, 16:42
        Подскажите плиз, как красиво округлить double до int'a?
        Что значит "округлить"?
        И что значит "красиво"?
        Преобразование в int
        ExpandedWrap disabled
          double a = ...;
          int b = (int)a;


        Округление к меньшему целому
        ExpandedWrap disabled
          double a = ...;
          double b = floor(a);


        Округление к большему целому
        ExpandedWrap disabled
          double a = ...;
          double b = ceil(a);


        Округление к ближайшему целому
        ExpandedWrap disabled
          double a = ...;
          double b = floor(a+0.5);

        ...
          Цитата trainer @ 25.01.04, 16:53
          Округление к ближайшему целому
          ExpandedWrap disabled
            double a = ...;
            double b = floor(a+0.5);

          ... вот под этим я и понимаю "красиво"...
          или под этим:
          Цитата
          double d = 12.4523;
          int i = (int)(d + 0.5);


          Спасибо!
            А как округлить с заданной точностью? Тобишь
            дано
            float a=5.23457656
            а надо обрезать его до скажем 3 знаков после точки например:
            a=5.235
            ??
              ExpandedWrap disabled
                // Округление до ближайшего с заданной точностью
                // DigAfterPt - количество знаков после запятой
                double RoundTo(double value, int DigAfterPt) {
                   double factor = power(10.0,DigAfterPt);
                   return floor(value*factor+0.5)/factor;
                }
              Работоспособность не проверял
                А какую библиотеку включать для функции power?
                  Пардоньте, не power, а pow - из math.h
                  ExpandedWrap disabled
                    // Округление до ближайшего с заданной точностью
                    // DigAfterPt - количество знаков после запятой
                    double RoundTo(double value, int DigAfterPt) {
                       double factor = pow(10.0,DigAfterPt);
                       return floor(value*factor+0.5)/factor;
                    }
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0292 ]   [ 16 queries used ]   [ Generated: 3.05.24, 09:41 GMT ]