Для округления double числа до определенного количества знаков можно использовать функцию `Math.round()` с умножением и делением на 10 в степень нужного числа знаков. Например, для округления до двух знаков после запятой:
```java
double number = 12.444;
int decimalPlaces = 2;
double roundedNumber = Math.round(number * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces);
```
Для вывода чисел с идеальным выравниванием можно использовать класс `DecimalFormat`. Этот класс позволяет форматировать числа с определенным количеством знаков до и после запятой, а также задавать ширину и выравнивание поля для числа. Например, чтобы выровнять числа по правому краю и иметь два знака после запятой:
```java
import java.text.DecimalFormat;
double number1 = 12.44;
double number2 = 133.4;
double number3 = 0.333;
DecimalFormat decimalFormat = new DecimalFormat("0.00");
decimalFormat.setPositivePrefix(" "); // Добавить пробел перед положительными числами
decimalFormat.setNegativePrefix("-"); // Добавить минус перед отрицательными числами
String formattedNumber1 = decimalFormat.format(number1);
String formattedNumber2 = decimalFormat.format(number2);
String formattedNumber3 = decimalFormat.format(number3);
System.out.println(formattedNumber1); // "12.44"
System.out.println(formattedNumber2); // "133.40"
System.out.println(formattedNumber3); // " 0.33"
```
Таким образом, можно достичь идеального выравнивания чисел с помощью класса `DecimalFormat`.