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

Как удалить десятичные значения из значения типа 'double' в Java

Я вызываю метод под названием "calculateStampDuty", который вернет размер гербового сбора за имущество. Процент вычислений штраф и возвращает правильное значение "15000.0". Однако я хочу показать значение передним конечным пользователем как только "15000", поэтому просто нужно удалить десятичную и любые предыдущие значения после этого. Как это может быть сделано? Мой код ниже:

float HouseValue = 150000;
double percentageValue;

percentageValue = calculateStampDuty(10, HouseValue);

private double calculateStampDuty(int PercentageIn, double HouseValueIn){
    double test = PercentageIn * HouseValueIn / 100;
    return test;
}

Я пробовал следующее:

  • Создание новой строки, которая преобразует двойное значение в строку, как показано ниже:

    String newValue = percentageValue.toString();

  • Я попытался использовать метод valueOf для объекта String, как показано ниже:

    String total2 = String.valueOf(percentageValue);

Однако я просто не могу получить значение без десятичных знаков. Кто-нибудь знает в этом примере, как вы получите "15000" вместо "15000.0"?

Спасибо

4b9b3361

Ответ 1

Вы можете преобразовать значение double в значение int. int x = (int) y где y - ваша двойная переменная. Затем печать x не дает десятичных знаков (15000 вместо 15000.0).

Ответ 2

Приятный и простой. Добавьте этот фрагмент во все, что вы выводите:

String.format("%.0f", percentageValue)

Ответ 3

Вы можете использовать

String newValue = Integer.toString((int)percentageValue);

или

String newValue = Double.toString(Math.floor(percentageValue));

Ответ 4

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

float x = 3.05
int y = (int) x;
System.out.println(y);

Выход будет 3

Ответ 5

Я сделал это, чтобы удалить десятичные знаки из значения double

new DecimalFormat("#").format(100.0);

Результат выше 100:)

Ответ 6

Я бы попробовал это:

String numWihoutDecimal = String.valueOf(percentageValue).split("\\.")[0];

Я тестировал это, и он работает, поэтому он просто преобразует из этой строки в любой тип числа или любую другую нужную вам переменную. Вы могли бы сделать что-то вроде этого.

int num = Integer.parseInt(String.valueOf(percentageValue).split("\\.")[0]);

Ответ 7

Вы можете использовать DecimalFormat, но, пожалуйста, также обратите внимание, что в этих ситуациях не рекомендуется использовать double, скорее используйте BigDecimal

Ответ 8

Попробуйте это, вы получите строку из метода format.

DecimalFormat df = new DecimalFormat("##0");

df.format((Math.round(doubleValue * 100.0) / 100.0));

Ответ 9

В качестве альтернативы вы можете использовать метод int integerValue = (int)Math.round(double a);

Ответ 10

Double i = Double.parseDouble("String with double value");

Log.i(tag, "display double " + i);

try {
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(0); // set as you need
    String myStringmax = nf.format(i);

    String result = myStringmax.replaceAll("[-+.^:,]", "");

    Double i = Double.parseDouble(result);

    int max = Integer.parseInt(result);
} catch (Exception e) {
    System.out.println("ex=" + e);
}

Ответ 11

С отливом. Вы в основном говорите компилятору "Я знаю, что я потеряю информацию с этим, но все в порядке". И затем вы преобразуете casted integer в строку, чтобы отобразить его.

String newValue = ((int) percentageValue).toString();

Ответ 12

Try:

String newValue = String.format("%d", (int)d);

Ответ 13

String truncatedValue = String.format("%f", percentageValue).split("\\.")[0]; решает цель

Проблема состоит из двух раз -

  • Сохранить интегральную (математическую целую) часть двойника. Следовательно, не может быть тип (int) percentageValue
  • Усечь (и не округлить) десятичную часть. Следовательно, не может использовать String.format("%.0f", percentageValue) или new java.text.DecimalFormat("#").format(percentageValue) как обе эти круглые десятичные части.

Ответ 14

Решение с помощью DecimalFormat class. Этот класс предоставляет множество функций для форматирования числа.
Чтобы получить двойное значение в виде строки без десятичных знаков, используйте код ниже.

DecimalFormat decimalFormat = new DecimalFormat(".");
decimalFormat.setGroupingUsed(false);
decimalFormat.setDecimalSeparatorAlwaysShown(false);

String year = decimalFormat.format(32024.2345D);

Ответ 15

Приведение типов к целому числу может создать проблему, но даже длинный тип не может удерживать каждый бит в два раза после сужения до десятичных знаков. Если вы знаете, что ваши значения никогда не превысят значения Long.MAX_VALUE, это может быть чистое решение.

Поэтому используйте приведенный выше риск.

double mValue = 1234567890.123456;
long mStrippedValue = new Double(mValue).longValue();

Ответ 16

Double d = 1000d;
System.out.println("Normal value :"+d);
System.out.println("Without decimal points :"+d.longValue());