任意の金額のために最適化された紙幣と硬貨を返すシステムを作りたいと思います。ここで任意の金額の紙幣と硬貨の数を取得
はしばらくの間、私のコードです:まあ、それはほとんど正しいです
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
double amount = Double.parseDouble(br.readLine());
if (amount > 0 && amount < 1000000.00) {
// ############################# BILLS ############################
double rest100 = amount/100;
double rest50 = amount % 100;
double rest20 = rest50 % 50;
double rest10 = rest20 % 20;
double rest5 = rest10 % 10;
double rest2 = rest5 % 5;
// ############################ COINS ############################
double rest01 = rest2 % 2;
double rest050 = rest01 % 1;
double rest025 = rest050 % .5;
double rest010 = rest025 % 25;
double rest005 = rest010 % .1;
double rest001 = rest005 % .05;
System.out.println("BILLS:\n"
+ (int) rest100
+ " bill(s) of 100.00\n"
+ (int) rest50/50
+ " bill(s) of 50.00\n"
+ (int) rest20/20
+ " bill(s) of 20.00\n"
+ (int) rest10/10
+ " bill(s) of 10.00\n"
+ (int) rest5/5
+ " bill(s) of 5.00\n"
+ (int) rest2/2
+ " bill(s) of 2.00\n"
+ "COINS:\n"
+ (int) (rest01/1)
+ " coin(s) of 1.00\n"
+ (int) (rest050/.5)
+ " coin(s) of 0.50\n"
+ (int) (rest025/.25)
+ " coin(s) of 0.25\n"
+ (int) (rest010/.1)
+ " coin(s) of 0.10\n"
+ (int) (rest005/.05)
+ " coin(s) of 0.05\n"
+ (int) (rest001/.01)
+ " coin(s) of 0.01");
}
}
、法案は完璧な作業している、私の問題はコインです。ここで
は、いくつかの入力です:- 576.73 //印刷正しく
- 8.45 //印刷誤っ
- 9.45 //印刷誤っ、下記をご覧:
実際の出力:
BILLS:
0 bill(s) of 100.00
0 bill(s) of 50.00
0 bill(s) of 20.00
0 bill(s) of 10.00
1 bill(s) of 5.00
2 bill(s) of 2.00
COINS:
0 coin(s) of 1.00
0 coin(s) of 0.50
1 coin(s) of 0.25
4 coin(s) of 0.10
0 coin(s) of 0.05
4 coin(s) of 0.01
Expecテッド出力:
BILLS:
0 bill(s) of 100.00
0 bill(s) of 50.00
0 bill(s) of 20.00
0 bill(s) of 10.00
1 bill(s) of 5.00
2 bill(s) of 2.00
COINS:
0 coin(s) of 1.00
0 coin(s) of 0.50
1 coin(s) of 0.25
2 coin(s) of 0.10
0 coin(s) of 0.05
0 coin(s) of 0.01
PS:それは今より質問が大きくできるようになる、しかし、あなたが必要な場合は、私が投稿することができますので、私はすべての期待される出力を掲載しません。前もって感謝します。
彼らは正確に浮動小数点数として表現することができない等の問題が0.1、0.05、および0.01であると思います。整数演算を正確かつ高速に行うためには、この種の問題に整数を使用することを検討してください。 –
あなたはmath.floor(rest100)を使っていますか?あなたはなぜ50セント硬貨を持っていますか? – kpie
@kpieは本当に何のためにも間違いですが、(残念ながら)それは問題ではありません。私の国には50セント硬貨があります。 – developer033