Java DecimalFormat - 使用整数

时间:2012-08-02 00:06:22

标签: java

我有一个便士的货币,作为整数(例如:1234)。我需要输出为:$12.34。我们不允许在此作业中使用双打或浮点数,只允许使用整数。

这就是我所拥有的:

totalChange = 1234;
DecimalFormat ourFormat = new DecimalFormat("$#,###.00");
String totalString = ourFormat.format(totalChange);
System.out.println("Your change of " + totalString + " is as follows:");

我认为DecimalFormat将从右向左移动,将34指定为小数点后面,12应放在之前。

我的输出为Your change of $1234.00 is as follows:

3 个答案:

答案 0 :(得分:4)

格式不会人为引入输入中不存在的小数位。

您可以先尝试转换为美元和美分,然后将两者合并为'

int dollars = totalChange / 100;
int cents = totalChange % 100;

提示(根据@DanielFischer的评论)

美分可以是1位或2位数,但您可能希望将它们输出为2位数。

答案 1 :(得分:2)

这个问题可能试图教你整数除法和模数。

当您对整数进行除法时,其余部分将被完全丢弃,因此如果需要该信息,则需要使用模运算符。模运算符(%)仅为您提供除法的余数。例如,5/3 = 1,5%3 = 2。

这些操作非常适合您的问题。

说我想弄清楚需要多少镍币和便士才能进行一定数量的精确改变。

int totalChange = 27; //I have 27¢
int nickels = totalChange / 5; //This gives 5 and discards the remainder
int pennies = totalChange % 5; //This gives 2, the remainder from your previous division

答案 2 :(得分:0)

我不知道这是否违反了你的规则(这听起来很奇怪,但干草)。你可以试试

int totalChange = 1234;
DecimalFormat ourFormat = new DecimalFormat("$#,###.00");
String totalString = ourFormat.format(totalChange / 100f);
System.out.println("Your change of " + totalString + " is as follows:");

否则,我认为您需要提供自己的格式化程序。