0

整数としてペニー単位の通貨を持っています (例: 1234)。出力を次のようにする必要があります$12.34。この代入では double または float を使用できません。整数のみを使用できます。

ここに私が持っているものがあります:

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

フォーマットは、入力に存在しない小数点以下の桁数を人為的に導入しません。

最初にドルとセントに変換してから、2 つを「.」で結合してみてください。

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 に答える