我有一个便士的货币,作为整数(例如: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:
答案 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:");
否则,我认为您需要提供自己的格式化程序。