Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация
 
Helldrg
Форумчанин
46 / 46 / 5
Регистрация: 10.01.2011
Сообщений: 659
10.06.2012, 03:38     Как округлить float до двух знаков после запятой   #1
Здравствуйте, помогите это реализовать.
AdAgent
Объявления
10.06.2012, 03:38     Как округлить float до двух знаков после запятой
_ViPeR_
Форумчанин
302 / 280 / 19
Регистрация: 02.03.2010
Сообщений: 642
10.06.2012, 09:24     Как округлить float до двух знаков после запятой   #2
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
double d = 5.77878752;
d = new BigDecimal(d).setScale(2, RoundingMode.UP).doubleValue();
System.out.println(d);
M128K145
Форумчанин
Эксперт C++
8188 / 3410 / 70
Регистрация: 03.07.2009
Сообщений: 10,637
10.06.2012, 13:09     Как округлить float до двух знаков после запятой   #3
Цитата Сообщение от Helldrg Посмотреть сообщение
Здравствуйте, помогите это реализовать.
Если есть желание подумать, то можно и так
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
   private static float round(float number, int scale) {
      int pow = (int) Math.pow(10, scale);
      float tmp = number * pow;
      return (float) (int) ((tmp - (int) tmp) >= 0.5f ? tmp + 1 : tmp) / pow;
   }
mutagen
Форумчанин
2391 / 2160 / 65
Регистрация: 15.09.2011
Сообщений: 5,185
Записей в блоге: 18
10.06.2012, 16:11     Как округлить float до двух знаков после запятой   #4
лучше вот такой хардкор
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
    private static float round(float number, int scale) {
        int pow = 10;
        for (int i = 1; i < scale; i++)
            pow *= 10;
        float tmp = number * pow;
        return (float) (int) ((tmp - (int) tmp) >= 0.5f ? tmp + 1 : tmp) / pow;
    }
rehscm
Новичок
6 / 2 / 1
Регистрация: 18.04.2010
Сообщений: 11
14.06.2012, 19:05     Как округлить float до двух знаков после запятой   #5
как у вас все сложно )

Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
public static double round(double value, int scale) {
      return Math.round(value * Math.pow(10, scale)) / Math.pow(10, scale);
}
mutagen
Форумчанин
2391 / 2160 / 65
Регистрация: 15.09.2011
Сообщений: 5,185
Записей в блоге: 18
14.06.2012, 19:14     Как округлить float до двух знаков после запятой   #6
Цитата Сообщение от rehscm Посмотреть сообщение
как у вас все сложно )
зато уделывает ваш вариант по скорости в разы)))
rehscm
Новичок
6 / 2 / 1
Регистрация: 18.04.2010
Сообщений: 11
14.06.2012, 20:20     Как округлить float до двух знаков после запятой   #7
да, действительно, 40 мс против 510 мс при 1млн вызовов. респект
Yandex
Объявления
14.06.2012, 20:20     Как округлить float до двух знаков после запятой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Опции темы

Текущее время: 04:06. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
Яндекс.Метрика