Ответ 1
Вы можете преобразовать значение double
в значение int
.
int x = (int) y
где y - ваша двойная переменная. Затем печать x
не дает десятичных знаков (15000
вместо 15000.0
).
Я вызываю метод под названием "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"?
Спасибо
Вы можете преобразовать значение double
в значение int
.
int x = (int) y
где y - ваша двойная переменная. Затем печать x
не дает десятичных знаков (15000
вместо 15000.0
).
Приятный и простой. Добавьте этот фрагмент во все, что вы выводите:
String.format("%.0f", percentageValue)
Вы можете использовать
String newValue = Integer.toString((int)percentageValue);
или
String newValue = Double.toString(Math.floor(percentageValue));
Вы можете преобразовать переменные double
, float
в integer
в одной строке кода, используя отличное выражение.
float x = 3.05
int y = (int) x;
System.out.println(y);
Выход будет 3
Я сделал это, чтобы удалить десятичные знаки из значения double
new DecimalFormat("#").format(100.0);
Результат выше 100:)
Я бы попробовал это:
String numWihoutDecimal = String.valueOf(percentageValue).split("\\.")[0];
Я тестировал это, и он работает, поэтому он просто преобразует из этой строки в любой тип числа или любую другую нужную вам переменную. Вы могли бы сделать что-то вроде этого.
int num = Integer.parseInt(String.valueOf(percentageValue).split("\\.")[0]);
Вы можете использовать DecimalFormat, но, пожалуйста, также обратите внимание, что в этих ситуациях не рекомендуется использовать double, скорее используйте BigDecimal
Попробуйте это, вы получите строку из метода format.
DecimalFormat df = new DecimalFormat("##0");
df.format((Math.round(doubleValue * 100.0) / 100.0));
В качестве альтернативы вы можете использовать метод int integerValue = (int)Math.round(double a);
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);
}
С отливом. Вы в основном говорите компилятору "Я знаю, что я потеряю информацию с этим, но все в порядке". И затем вы преобразуете casted integer в строку, чтобы отобразить его.
String newValue = ((int) percentageValue).toString();
Try:
String newValue = String.format("%d", (int)d);
String truncatedValue = String.format("%f", percentageValue).split("\\.")[0];
решает цель
Проблема состоит из двух раз -
(int) percentageValue
String.format("%.0f", percentageValue)
или new java.text.DecimalFormat("#").format(percentageValue)
как обе эти круглые десятичные части.Решение с помощью DecimalFormat class. Этот класс предоставляет множество функций для форматирования числа.
Чтобы получить двойное значение в виде строки без десятичных знаков, используйте код ниже.
DecimalFormat decimalFormat = new DecimalFormat(".");
decimalFormat.setGroupingUsed(false);
decimalFormat.setDecimalSeparatorAlwaysShown(false);
String year = decimalFormat.format(32024.2345D);
Приведение типов к целому числу может создать проблему, но даже длинный тип не может удерживать каждый бит в два раза после сужения до десятичных знаков. Если вы знаете, что ваши значения никогда не превысят значения Long.MAX_VALUE, это может быть чистое решение.
Поэтому используйте приведенный выше риск.
double mValue = 1234567890.123456;
long mStrippedValue = new Double(mValue).longValue();
Double d = 1000d;
System.out.println("Normal value :"+d);
System.out.println("Without decimal points :"+d.longValue());