-1

目前我正在尝试用java编写一个变更机器。由于某种原因,在转换过程中会出现很大的精度损失。

它将首先询问欠多少和支付多少的数据值。然后它会除掉四分之一的数量,然后将余数取模。然后它会用硬币、镍币和便士来执行此操作。在此之后,它将打印出欠了多少零钱。

import java.io.*;
import static java.lang.System.*;

import java.util.Scanner;

class change{


     public static void main (String str[]) throws IOException {

            //asker thingy
            Scanner scan = new Scanner(System.in);
            System.out.println("Please enter the Cost of the Item:");
            System.out.print("$");
            double costowed = scan.nextDouble();
            System.out.println("Please Enter the Amount Payed:");
            System.out.print("$");
            double costpayed = scan.nextDouble();

            //Quarters
            double a1 = Math.round( (costpayed - costowed) * 100);
            int quarters = (int)(a1 / 25);
            int a2 = (int)(a1 % 25);

            //dimes
            int dimes = (int)(a2 / 10);
            int a3 = (int)(a1 % 10);

            //nickles & pennies
            int nickles = (int)(a3 / 5);
            int pennies = (int)(a1 % 5);

            //change owed
            double arc = (double)(a1 / 100);

            //print sequence
            System.out.println("Change owed: " + arc);
            System.out.println("Quarters: " + quarters);
            System.out.println("Dimes: " + dimes);
            System.out.println("Nickles: " + nickles);
            System.out.println("Pennies: " + pennies);
     }

}
4

1 回答 1

1

线

int a3 = (int)(a1 % 10);

应该:

int a3 = (int)(a2 % 10);

同样int pennies = (int)(a1 % 5);应该是int pennies = (int)(a3 % 5);

于 2013-09-26T00:37:59.607 回答