ドルやユーロでは、小数を含むため、
多くの日本語サイトの記事では小数点を含む計算ができません。
そして引っ掛かりやすいのが、
与えられた金額でそのまま、何セントあるか計算しがちですが、
その場合、
Double値で、小数の切り捨てなど
めんどくさいやり方に発展します。
筆者がつまずいたのもそこでした。
なので、セントの部分は×100して、計算します。
正しい書き方
import java.util.Scanner;
public class MoneyExchange{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("金額を入力してください: ");
double total = input.nextDouble();
int twentyBills, tenBills, fiveBills,
toonies, loonies, quarters, dimes,
balance; //残高
/*
twentyBills, 20ドル紙幣
tenBills, 10ドル紙幣
fiveBills, 5ドル紙幣
toonies, 2ドル硬貨
loonies, 1ドル硬貨
quarters, 25セント硬貨
dimes 10セント硬貨
*/
balance = (int) (total * 100);
twentyBills = balance / 2000;
balance = balance % 2000;
tenBills = balance / 1000;
balance = balance % 1000;
fiveBills = balance / 500;
balance = balance % 500;
toonies = balance / 200;
balance = balance % 200;
loonies = balance / 100;
balance = balance % 100;
quarters = balance / 25;
balance = balance % 25;
dimes = balance / 10;
balance = balance % 10;
balance = balance + 1;
System.out.println("20ドル紙幣が "+ twentyBills + "枚");
System.out.println("10ドル紙幣が "+ tenBills + "枚");
System.out.println("5ドル紙幣が "+ fiveBills + "枚");
System.out.println("2ドル硬貨が "+ toonies + "枚");
System.out.println("1ドル硬貨が "+ loonies + "枚");
System.out.println("25セント硬貨が "+ quarters + "枚");
System.out.println("10セント硬貨が "+ dimes + "枚");
System.out.println("1セント硬貨が "+ balance + "枚");
}
}
出力例
金額を入力してください: 521.73
20ドル紙幣が 26枚
10ドル紙幣が 0枚
5ドル紙幣が 0枚
2ドル硬貨が 0枚
1ドル硬貨が 1枚
25セント硬貨が 2枚
10セント硬貨が 2枚
1セント硬貨が 4枚
例2
20ドル紙幣が 8枚
10ドル紙幣が 1枚
5ドル紙幣が 1枚
2ドル硬貨が 1枚
1ドル硬貨が 0枚
25セント硬貨が 3枚
10セント硬貨が 0枚
1セント硬貨が 9枚