0

我有一种以便士为单位的货币,作为整数(例如:)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:

4

4 回答 4

4

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

您可以尝试先转换为美元和美分,然后将两者与“。”结合起来。

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

提示(基于@DanielFischer 的评论)

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

于 2012-08-02T00:09:57.223 回答
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
于 2012-08-02T00:18:32.397 回答
1

对于格式化,使用 Formatter.format(),给它美元和美分作为参数,并用前导 $ 和美分的 2 位数字进行格式化(如上面有人建议的那样)。由于这是家庭作业,我不会放弃如何做到这一点,但 javadocs 应该会有所帮助:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

于 2012-08-02T03:55:32.637 回答
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:");

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

于 2012-08-02T00:11:25.503 回答