私はJavaで通貨を扱う大学の課題をやっています。そのため、doubleの代わりにintを使用し、後でステートメントを出力するときにドル値に変換することをお勧めします。
数値4005で計算を行うまではすべて正常に機能します(intとして表される$ 40.05のように)。問題のあるコードの一部を貼り付けています。誰かが私が間違っていることを教えてくれれば幸いです。
import java.io.*;
class modumess {
public static void main(String[] args) {
int money = 4005; //Amount in cents, so $40.05;
// Represent as normal currency
System.out.printf("$%d.%d", money/100, money%100);
}
}
上記のコードを実行すると、$40.05ではなく$40.5が表示されます。何が得られますか?
これは私の宿題のためであり、学びたいので、単純な解決策ではなく、ここで問題の根本について説明していただければ幸いです。
編集:Finbarrの答えに続いて、問題を修正したと思われるコードに以下を追加しました:
if (money%100 < 10) {
format = "$%d.0%d";
}
これはそれを行うための良い方法ですか、それとも私はここで物事を複雑にしすぎていますか?
編集:私を助けたのはフィンバーとウェスの両方の答えであったことを明確にしたいのですが、進め方が明確になったのでウェスの答えを受け入れました。