Как отформатировать двойники в валюте США и выровнять по десятичным? - PullRequest
0 голосов
/ 11 октября 2019

Я в своем первом классе программирования, использующем Java, и мне сказали, что этот сайт - хороший источник помощи по программированию.

Сейчас я нахожусь в затруднительном положении, потому что у меня проблемы с вводом чисел в валюте США и их выравниванием по десятичной запятой. У самого назначения есть пользователь, вводящий начальный депозит и процентную ставку. Затем программа останавливается, когда ваш первоначальный депозит удвоился. Все работает, как и ожидалось, но я не могу настроить десятичные дроби.

 while(Total < Deposit*2 )
            {
                Total = Total*(InterestRate/100+1.00);
                Year = (Year + 1);
                System.out.printf("%-16s %-24s %-15s\n", Year + ".", fmt.format((Total-Deposit)), fmt.format(Total));
            }

Интервал и перевод его в формат валюты не проблема, но на данный момент он выравнивает знак доллара. Лично я думаю, что это выглядит лучше, но профессор сказал, что хотел бы, чтобы десятичные точки были выровнены, и теперь я твердо намерен выяснить это.

Я видел

String.format("%8.3f", number)

Но я не знаю, как заставить это включить это в мой текущий код.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Форматирование зависит от длины вашего значения Double. Например, для некоторого случайного значения total, deposit и т. Д. Часть результата показана ниже. (Не уверен, что это именно то, что ожидалось):

 5.      -18950.0000000000000    1050.000000000000
 6.      -18897.5000000000000    1102.500000000000
 7.      -18842.3750000000000    1157.625000000000
 8.      -18784.4937500000000    1215.506250000000
 9.      -18723.7184375000000    1276.281562500000
10.      -18659.9043593750000    1340.095640625000
11.      -18592.8995773437500    1407.100422656250

Я использовал приведенный ниже код для этого,

while(total < deposit*2 ) {
    total = total*(interestRate/100+1.00);
    year = (year + 1);
    System.out.printf("%3s \t %19.13f \t %17.12f\n", year + ".", total - deposit, total);
}

Здесь, в 19.13f 19 относится к общей длинечисло, включая десятичные разряды, тогда как 13 относится только к десятичной части.

0 голосов
/ 11 октября 2019

Удалите fmt.format и используйте новый формат,

вместо:

fmt.format((Total-Deposit))

просто используйте:

Total - Deposit

И измените свой формат с %-24s на %8.3f

Форматы 's' Строки и форматы 'f' с плавающей точкой

...