2015-05-14 5 views
0

У меня есть два Интсява деление целых чисел установить точность

int a = 5324; 
int b = 5; 

Разделив «а» на «б» я должен получить ответ, как «1064.8». Я хочу преобразовать этот ответ в строку. Я ожидаю, что моя строка будет «1064.8». И меня интересует «8», которое приходит после ».

Как убедиться, что моя строка будет содержать ровно 1 символ после "."

Вот моя попытка:

float answer = ((float) a)/b; 
String s = answer.toString(); 
Character result = s.charAt(s.length()-1); 

Но, я не могу, чтобы убедиться, что мой результат такой же, как символ после «»

ответ

7

Вы можете просто умножить свой результат на 10, чтобы цифра, которая вас интересует, является последней цифрой в результате целочисленного деления. Затем вы можете использовать % 10, чтобы получить последнюю базы 10 цифр:

class Test { 
    public static void main(String[] args) { 
    int a = 5324; 
    int b = 5; 

    int fixedpointresult = 10*a/b; 
    int lastDigit = fixedpointresult % 10; 

    System.out.println(lastDigit); 
    } 
} 

Печатает 8

+0

Из все предоставленные ответы, это будет самым быстрым. – Zenexer

4

Я предполагаю, что вы хотите напечатать результат с точностью до одного. String.format() предлагает поддержку для этого:

float answer = ((float) a)/b;  
String out = String.format("%.1f",answer); 

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

DecimalFormat myFormatter = new DecimalFormat(""###.#""); 
    String output = myFormatter.format(value); 

Дополнительную ссылку и примеры here

Если вы действительно заинтересованы только в первом символе за . Что другие ребята answer сделают трюк.

0

Это решение даст вам первое число после запятой как знак:

char result = Character.forDigit(int(((float)(a%b)/b) * 10), 10); 
  1. Получить значение по модулю: 4
  2. Бросить его на плаву и разделить на него: 0,8
  3. Доведите нужное число перед десятичной точкой: 8.0
  4. Cast это INT, чтобы отрезать покоя (нет ни в этом случае): 8
  5. Преобразование его в уголь, используя Character.forDigit()
Смежные вопросы