2016-11-18 3 views
-1

Я не мог найти ответ на свой вопрос в сети, поэтому я здесь.Печать двойная с точной длиной в java

Я хочу напечатать номер с указанным количеством цифр, например, в Java:

Length = 10 

1.123456789  ==> 1.123456789 

123.123456789 ==> 123.1234567 

123456.123456789 ==> 123456.1234 
+0

Как насчет '12345678911' (одиннадцатизначный номер)? – Rogue

+0

Я пытаюсь использовать разные методы в формате, но пока ничего не работает, и да, мне нужно число с точным количеством цифр. –

ответ

0

сохранить номер в строку и взять подстроку от 0 до 10. Теперь вы можете разобрать его ба ск и получил номер с 10 цифр

0

Ну, вы можете рассчитать сумму на основе длины без десятичного числа:

public String doubleToString(double in) { 
    int length = (((int) in) + "").length(); //non-decimal length 
    if (length <= 0 || length > 10) { 
     //error out? not sure how you wish to handle 11-digit numbers 
    } 
    return String.format("%." + (10 - length) + "f", in); //format decimal 
} 

Укороченный:

//default to 0 decimals for >10 digits 
public String doubleToString(double in) { 
    return String.format("%." + Math.max(0, (10 - (((int) in) + "").length()) + "f", in); 
} 
1

Вы можете попробовать это:

Double number = 1.123456789; 
BigDecimal bigDecimal = new BigDecimal(number).setScale(6, RoundingMode.HALF_EVEN); 
System.out.println("double value: " + bigDecimal.doubleValue()); 

В setScale методе вы можете выбрать количество цифр после запятой.

2

Кажется, вам нужно получить первые цифры n из числа String. Однако десятичный разделитель не должен считаться цифрой:

String printNumber(double number, int n) { 
    String value = String.valueOf(number); 
    String result = ""; 
    int count = 0; 
    for (char c : value.toCharArray()) { 
     if (count == n) break; 
     if (c != '.') { 
      count++; 
     } 
     result += c; 
    } 
    return result; 
} 
+0

нужно только проверить, есть ли здесь десятичная часть, разделитель не считается;) – AxelH

+0

100.1 wont work for n == 4 – xro7

+0

@ xro7, true. Будет обновлен ответ. –

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