2016-10-19 2 views
-2

Я делаю калькулятор, но я изо всех сил пытаюсь сделать мои номера округлыми, например 18.0 до 18. Как мне отобразить число 18, а не 18.0 для моего калькулятора, форматируя его? Вот код, который я использую.Невозможно форматировать номера

String answer; 
    double D; 
    secondnumber = Double.parseDouble(numTx.getText()); 

    if (operation.equals("+")) { 
     result = firstnum + secondnumber; 
     answer = Double.toString(result); 
     numTx.setText(answer); 
    } 
    if (operation.equals("-")) { 
     result = firstnum - secondnumber; 
     answer = Double.toString(result); 
     numTx.setText(answer); 
    } 
    if (operation.equals("/")) { 
     result = firstnum/secondnumber; 
     answer = Double.toString(result); 
     numTx.setText(answer); 
    } 
    if (operation.equals("*")) { 
     result = firstnum * secondnumber; 
     answer = Double.toString(result); 
     numTx.setText(answer); 
    } 

выше - это код, который я пытался использовать, но он дал огромные ошибки. answer = String.format ("% 1 $ .1f", result);

+0

Вы пытались бросить двойников в Интс? –

+0

Было бы полезно продемонстрировать, что вы пробовали, и результаты. –

+0

Стюарт, пожалуйста, улучшите свой вопрос. Как вы видите в ответах, неясно, интересуетесь ли вы округлением чисел или форматированием вывода. –

ответ

6

Выведение значение double в 18 вместо 18.0 не округления. Это форматирование.

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

Самый простой способ создать такой NumberFormat - это фактически создать DecimalFormat.

Пример:

DecimalFormat fmt = new DecimalFormat("0.####"); // show between 0 and 4 decimals, as needed 
System.out.println(fmt.format(18.0)); // prints: 18 
System.out.println(fmt.format(18.250)); // prints: 18.25 
System.out.println(fmt.format(Math.PI)); // prints: 3.1416 
+0

Благодарим вас за помощь. Я получил его на работу –

3

Если вы хотите получить целые результаты, вы можете наложить double на int (или long, если вы ожидаете больших ответов). Примечание: этот отбор даст ответ, поэтому, если вы хотите получить более типичный округленный результат, вы можете использовать Math.round(). Для того, чтобы бросить double к int вы можете сделать это

double i = 1.32; 
int j = (int) i; 
+0

Когда я пытаюсь math.round() и круглый результат, он не будет округлять его. –

+0

@StewartClay, что вы имеете в виду, это не будет вокруг него? Как вы называете функцию? – UnholySheep

+1

@StewartClay вы не называете 'Math.round()', а затем все магически округлено. Например, вам нужно вызвать 'Math.round (18.0)'. –

Смежные вопросы