我有以下公式和代码:
我尝试了数学。
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;
快乐的编码!!!!!!!!!!!!!!!!!!!!!!!!!!