如何让除法运算符向下舍入双值?

时间:2016-09-25 19:54:43

标签: java

(在这里完成新手)。 我有一个额外的表单,简单的练习来完成。其中一个练习说写一个程序,用户可以输入随机金额,该程序告诉用户需要多少欧元,50美分,20美分,10美分,5美分,2美分和1美分来弥补输入的金额。 我尝试使用模数来获得所需的分数,

我的问题是如何让我的程序计算所需的CENTS数量? 每当我使用除法运算符来获得剩余金额所需的50美分(例如0.60)时,它会使得我的2倍作为输出。

Scanner keyboard = new Scanner(System.in);

System.out.print("Input money recieved: ");
double recieve = keyboard.nextDouble();

double cents = recieve * 100;

int centsTotal = (int)cents;

System.out.print("Cents in total " + centsTotal);

int notes = centsTotal / 100;

System.out.print("\nEuros: " + notes);

double remain = recieve % notes;

System.out.printf("\nRemain: %.2f",remain);

double remain2 = remain / 0.5;

System.out.println("\nTest: ",remain2);

我的输出是:

Input money recieved: 45,78
    Cents in total 4578
    Euros: 45
    Remain: 0,78
    Test: 1.5600000000000023

2 个答案:

答案 0 :(得分:1)

您可以使用Math.round()函数作弊:

double roundOff = Math.round(valueToRound * 100.0) / 100.0;

这可确保您将值保持为double,这样您就可以根据需要对其进行进一步操作。

答案 1 :(得分:0)

一种方式可能有点残酷,但内存效率高(不创建新对象或变量)。只需将double转换为int即可向下舍入。

public class RoundingTest {
  public static void main(String[] args) {
    double num = 1.56;
    System.out.println("Test: " + (int)num);
  }
}

输出:

Test: 1

如果需要,这还允许您保持原始双重不变,以便进一步计算。