2015-10-26 4 views
-1

Что это лучший способ, чтобы написать что-то вроде этого:печати N знаков после запятой поплавка или двойной

Scanner input = new Scanner(System.in); 
int n = input.nextInt(); 
double d = 5.123456789123456789; 
System.out.printf("%.nf", d); 

Спасибо!

+1

что вы хотите сделать? вы хотите напечатать двойной d n раз? –

+0

Отметьте NumberFormat и DecimalFormat – ControlAltDel

ответ

2

Строка формата - это всего лишь String, которую вы можете создать во время выполнения. Например.

System.out.printf("%." + n + "f", d); 
0

Чтобы сохранить количество знаков после запятой для double, вы можете использовать java DecimalFormat.

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

Итак:

int n = 5; // or read in from user input 
    String decimalFormatPattern = "."; 
    for (int i =0 ; i < n; ++i) { // generate pattern at runtime 
     decimalFormatPattern += "#"; 
    } 
    // format pattern would be .##### 
    DecimalFormat decimalFormat = new DecimalFormat(decimalFormatPattern); 

    double d = 5.123456789123456789; 
    System.out.println(decimalFormat.format(d)); 
Смежные вопросы