舍入到最近的小数?bigdecimal vs备用形式



我有以下公式和代码:

我尝试了数学。

double netPay = grossPay - totalDeduction;
System.out.printf("Net Pay: $%.2f", (netPay));

这个想法是按以下数字获取数字:

46.225

圆形 46.22

而不是46.23

如评论者所说:用于财务目的,使用bigdecimal。

除此之外:

double netPayCents = Math.floor(netPay * 100);
netPay = netPayCents / 100d;

为什么要使用bigdecimal?

浮点值(包括双重值(可能非常精确,但是在尝试绝对精确时会存在问题。在大多数数学操作之后,它们总是受到舍入的。

请参阅此线程以获取更多详细信息:double vs. bigdecimal?

您也可以使用以下代码:

import java.text.DecimalFormat;
import java.math.RoundingMode;
public class Main
{
    public static void main(String[] args) {
        double netPay = 46.225;
        DecimalFormat f = new DecimalFormat("##.00");
        f.setRoundingMode(RoundingMode.DOWN);
        System.out.println(f.format(netPay));
    }
}

输出:

46.22

这是我使用的方法:

例如,NetPay值为 46.225

通过使用以下代码,您将获得输出,例如 46.22

double netPay =46.225;           // just assigning your decimal to a variable
netPay =netPay *100;              // this sets netPay to 4622.5
netPay =Math.floor(netPay);      // this sets netPay to 4622.0
netPay =netPay/100;              // this sets netPay to 46.22

vnstead的上述代码您只能使用以下单行,它也可以使用相同的

netPay =Math.floor(netPay*100) / 100;

快乐的编码!!!!!!!!!!!!!!!!!!!!!!!!!!

最新更新