Подтвердить что ты не робот

Как округлить двойное значение до 2 десятичных точек?

Возможный дубликат:
круглые два-два десятичных знака в java

Я хочу округлить двойное значение до двух десятичных знаков.

например: у меня двойной d = 2; и результат должен быть результатом = 2.00

4b9b3361

Ответ 1

Нет разницы во внутреннем представлении между 2 и 2.00. Вы можете использовать Math.round для округления значения до ближайшего целого числа - чтобы округлить до двух десятичных знаков, вы можете умножить на 100, округлить, а затем разделить на 100, но вы не должны ожидать, что результат будет равным 2dps, из-за характера двоичной арифметики с плавающей запятой.

Если вас интересует только форматирование значения до двух знаков после запятой, посмотрите DecimalFormat - если вас интересует несколько десятичных знаков, вы должны действительно использовать BigDecimal. Таким образом, вы узнаете, что вы действительно имеете дело с десятичными цифрами, а не с "ближайшим доступным значением double".

Другим вариантом, который вы можете рассмотреть, если вы всегда имеете дело с двумя десятичными знаками, является сохранение значения как long или BigInteger, зная, что он точно в 100 раз превышает реальное значение - эффективно сохраняет центы вместо долларов, например.

Ответ 2

Math.round(number*100.0)/100.0;

Ответ 3

double RoundTo2Decimals(double val) {
            DecimalFormat df2 = new DecimalFormat("###.##");
        return Double.valueOf(df2.format(val));
}

Ответ 4

import java.text.DecimalFormat;

public class RoundTest {
    public static void main(String[] args) {
        double i = 2;    
        DecimalFormat twoDForm = new DecimalFormat("#.00");
        System.out.println(twoDForm.format(i));
        double j=3.1;
        System.out.println(twoDForm.format(j));
        double k=4.144456;
        System.out.println(twoDForm.format(k));
    }
}

Ответ 5

Я предполагаю, что вам нужен форматированный вывод.

System.out.printf("%.2f",d);

Ответ 6

вы также можете использовать этот код

public static double roundToDecimals(double d, int c)  
{   
   int temp = (int)(d * Math.pow(10 , c));  
   return ((double)temp)/Math.pow(10 , c);  
}

Он дает вам возможность контролировать количество чисел после точки.

d = number to round;   
c = number of decimal places  

подумайте, что это будет полезно

Ответ 7

Это сделало бы это.

     public static void main(String[] args) {
        double d = 12.349678;
        int r = (int) Math.round(d*100);
        double f = r / 100.0;
       System.out.println(f);
     }

Вы можете сократить этот метод, легко понять, почему я так написал.

Ответ 8

public static double addDoubles(double a, double b) {
        BigDecimal A = new BigDecimal(a + "");
        BigDecimal B = new BigDecimal(b + "");
        return A.add(B).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    }