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

Обрезка Двойной до 2 знаков после запятой

должен быть простым. Я изначально собирался сделать это в javascript, но должен сделать это до установки формы на странице моего обработчика. В любом случае мне нужно, чтобы эти значения имели 2 десятичных знака. Пример 219333.5888888 должен быть 219333.58. Есть функция отделки или что-то еще?

 form.setUnitRepairCost(Double.toString(jobPlanBean.getUnitTotalCost()));   //UNIT REPAIR COST
 form.setUnitMaterialCost(Double.toString(jobPlanBean.getUnitTotalMaterialCost())); //UNIT MATERIAL COST
4b9b3361

Ответ 1

вот простой пример для форматирования десятичного значения

import java.text.*;

public class DecimalPlaces {

    public static void main(String[] args) {

        double d = 1.234567;
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.print(df.format(d));
    }

}

Ответ 2

public static void main(String[] args) {

        double d = 6.3546;
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.print(df.format(d));
}

Ответ 3

Для получения двойной спины, а не строки:

double d = 80.123;
DecimalFormat df = new DecimalFormat("#.##");
double p = Double.parseDouble(df.format(d));

Ответ 4

умножьте double на 100.0 и передайте его в int, затем возьмите этот int и передайте его в double и разделите на 100.0

    int temp = (int)(longDouble*100.0);
    double shortDouble = ((double)temp)/100.0;

Ответ 5

Как насчет:

new java.text.DecimalFormat("0.00").format( yourNumber );

Ответ 6

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

public static String truncateUptoTwoDecimal(double doubleValue) {
    String value = String.valueOf(doubleValue);
    if (value != null) {
        String result = value;
        int decimalIndex = result.indexOf(".");
        if (decimalIndex != -1) {
            String decimalString = result.substring(decimalIndex + 1);
            if (decimalString.length() > 2) {
                result = value.substring(0, decimalIndex + 3);
            } else if (decimalString.length() == 1) {
                result = String.format(Locale.ENGLISH, "%.2f",
                        Double.parseDouble(value));
            }
        }
        return result;
    }
    return null;
}

Ответ 8

Посмотрите на использование десятичного формата:

DecimalFormat twoDForm = new DecimalFormat("#.##");

Ответ 10

public static double truncateDecimals(double d, int len) {
    long p = pow(10, len);
    long l = (long)(d * p);
    return (double)l / (double)p;
}

public static long pow(long a, int b) {
    long result = 1;
    for (int i = 1; i <= b; i++) {
       result *= a;
    }
    return result;
}

Ответ 11

Используя эти два метода, вы также можете обрабатывать все исключения:

private String convertedBalance(String balance){
    String convertedBalance = balance.toString();
    Double d;
    try {'enter code here'
        d = Double.parseDouble(balance.toString());
        Log.i("ConvertedNumber", "d (amount) = "+d.toString());
        d = round(d, 2);

        DecimalFormat f = new DecimalFormat("0.00");
        convertedBalance = f.format(d);

        Log.i("ConvertedNumber", "convertedBalance = "+convertedBalance);

    }catch (NumberFormatException e){
        Log.i("ConvertedNumber", "Number format exception");
    }

    return convertedBalance;
}


public static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();

    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(places, RoundingMode.HALF_UP);
    return bd.doubleValue();
}