IT

[Java]小数ありの金額で、何枚の紙幣とコインが必要?

0 0 投票数
評価

ドルやユーロでは、小数を含むため、
多くの日本語サイトの記事では小数点を含む計算ができません。


そして引っ掛かりやすいのが、
与えられた金額でそのまま、何セントあるか計算しがちですが、

その場合、
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枚
guest
0 コメント
Inline Feedbacks
すべてのコメントを見る