【问题标题】:How do you round a decimal when using the if statement in Java? [duplicate]在 Java 中使用 if 语句时如何舍入小数? [复制]
【发布时间】:2017-02-14 14:03:03
【问题描述】:

我是 Java 新手,我正在编写一个信用卡 Java 作业,您可以在其中向信用卡添加费用,并在费用中添加利息。我使用 If 语句对兴趣进行了编码,但它输出为未四舍五入的小数。

public class Credit_Card
{
    public static void main (String []args)
    {
        Scanner c = new Scanner (System.in);
        double num1, num2, interest, newBalance, min = 0;

        int num3 = 50;

        System.out.println ("What is the previous balance?");
        num1 = c.nextInt();

        System.out.println ("What is the total amount of additional       charges?");
        num2 = c.nextInt();

        interest = num2;

        if (num2 == 0)
         interest = (interest + 0); //There is no interest if num2 is 0

        if (num2 > 0)
        interest = (interest*(2.0f/100.0f)); //total amount of money owed is multiplied by 2 percent

        newBalance = num1 + num2 + interest;

        System.out.println ("CS CARD International Statement");
        System.out.println ("===============================");
        System.out.println ("");
        System.out.println ("Previous Balance:      $" + num1 );
        System.out.println ("Additional Charges:    $" + num2 );
        System.out.println ("Interest:              $" + interest );
        System.out.println ("");
        System.out.println ("New Balance:           $" + newBalance);
        System.out.println ("");

        if (newBalance < 50)
         min = newBalance;

        if(newBalance >= 50 && newBalance <= 300)
         min = num3;

        if(newBalance > 301)
         min = (newBalance*(20.0f/100.0f));

        System.out.println ("Minimum Payment:       $" + min);
    }
}

输出如下所示:

What is the previous balance?
1000
What is the total amount of additional charges?
25
CS CARD International Statement
===============================

Previous Balance:      $1000.0
Additional Charges:    $25.0
Interest:              $0.4999999888241291

New Balance:           $1025.4999999888241

Minimum Payment:       $205.100003053993

我认为,因为利息是一个永恒的小数,所以它搞砸了其他一切。而不是兴趣是“0.49999999999”,我希望它喜欢“0.50”。非常感谢您的任何帮助。

【问题讨论】:

  • 看看here
  • if 语句与舍入没有任何关系。你永远不应该用浮点数来计算金钱。

标签: java if-statement


【解决方案1】:

String.format ("%.2f", var); 其中var 是您的新余额等。

这会将其四舍五入到小数点后 2 位。

查看https://www.dotnetperls.com/format-java 以获取您可以使用格式化程序执行哪些操作的列表。

【讨论】:

  • 我对插入“String.format”的位置有点困惑。您是否将其替换为:interest = (interest*(2.0f/100.0f));
  • 在您的 println 中。
  • 对于这个:“%.2f”,这正是我输入的内容还是我用百分比替换了“%”?而且由于利息没有四舍五入,我会把它放在“var”而不是“newBalance”中吗?抱歉我的误解,感谢您的帮助
  • 根据您的代码,System.out.println ("Interest: $" + String.format ("%.2f", interest);。注意%是一个字符,用来表示下面是格式化指令。
  • 很高兴为您提供帮助。请查看格式化程序文档,了解您可以执行的一系列格式化操作。或者,DecimalFormat 是另一个可用于格式化十进制数的类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 2015-01-26
  • 1970-01-01
  • 2015-12-11
相关资源
最近更新 更多