如何在税务程序[Java]中对输出进行四舍五入?

如何在税务程序[Java]中对输出进行四舍五入?,java,decimal,rounding,Java,Decimal,Rounding,我需要我的输出浮动到小数点后2位,因为输出是货币。例如,如果我运行: 如果您是单身,请输入1。如果您已婚,请输入2 一, 输入您的应纳税所得额 27060.34 联邦所得税:4060.3435美元 我需要联邦所得税来输出4060.34美元,而不是4060.3435美元 我的代码: import static org.junit.Assert.*; import java.util.Scanner; import org.junit.Test; public class IRS { pub

我需要我的输出浮动到小数点后2位,因为输出是货币。例如,如果我运行:

如果您是单身,请输入1。如果您已婚,请输入2

一,

输入您的应纳税所得额

27060.34

联邦所得税:4060.3435美元

我需要联邦所得税来输出4060.34美元,而不是4060.3435美元

我的代码:

import static org.junit.Assert.*;
import java.util.Scanner;
import org.junit.Test;
public class IRS {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter 1 if you are single. Enter 2 if you are married");
        int martialstatus = scan.nextInt();
        if (martialstatus == 1) {
            Scanner scan2 = new Scanner(System.in);
            System.out.println("Enter your taxable income");
            double income = scan2.nextDouble();
            if ((income > 0) && (income <= 27050.00)) {
                System.out.println("Federal Income Tax:$" + (income * .15));
            }
            if ((income > 27050.00) && (income <= 65550.00)) {
                System.out.println("Federal Income Tax:$" + (4057.50 + (.275 * (income - 27050))));
            }
            if ((income > 65550.00) && (income <= 136750.00)) {
                System.out.println("Federal Income Tax:$" + (14645.00 + (.305 * (income - 65550.00))));
            }
            if ((income > 136750.00) && (income <= 297350.00)) {
                System.out.println("Federal Income Tax:$" + (36361.00 + (.355 * (income - 136750.00))));
            }
            if (income > 297350.00) {
                System.out.println("Federal Income Tax:$" + (93374.00 + (.391 * (income - 297350.00))));
            }
        } else if (martialstatus == 2) {
            Scanner scan3 = new Scanner(System.in);
            System.out.println("Enter your taxable income");
            double income2 = scan3.nextDouble();
            if (income2 <= 45200.00) {
                System.out.println("Federal Income Tax:$" + (.15 * income2));
            }
            if ((income2 > 45200.00) && (income2 <= 109250.00)) {
                System.out.println("Federal Income Tax:$" + (6780.00 + (.275 * (income2 - 45200))));
            }
            if ((income2 > 109250.00) && (income2 <= 166500.00)) {
                System.out.println("Federal Income Tax:$" + (24393.75 + (.305 * (income2 - 109250.00))));
            }
            if ((income2 > 166500.00) && (income2 <= 297350.00)) {
                System.out.println("Federal Income Tax:$" + (41855.00 + (.355 * (income2 - 166500.00))));
            }
            if (income2 > 297350.00) {
                System.out.println("Federal Income Tax:$" + (88306.00 + (.391 * (income2 - 297350.00))));
            }
        } else {
            System.out.println("Error. Try again");
        }
    }
}
import static org.junit.Assert.*;
导入java.util.Scanner;
导入org.junit.Test;
公共类国税局{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“单身时输入1,已婚时输入2”);
int martialstatus=scan.nextInt();
如果(军事状态==1){
扫描仪scan2=新扫描仪(System.in);
System.out.println(“输入您的应纳税所得额”);
双倍收入=扫描2.nextDouble();
如果((收入>0)和(收入27050.00)和(收入65550.00)和(收入136750.00)和(收入297350.00){
System.out.println(“联邦所得税:$”+(93374.00+(.391*(收入-297350.00)));
}
}否则如果(军事状态==2){
Scanner scan3=新扫描仪(System.in);
System.out.println(“输入您的应纳税所得额”);
double income2=scan3.nextDouble();
如果(income2 45200.00)和(income2 109250.00)和(income2 166500.00)和(income2 297350.00){
System.out.println(“联邦所得税:$”+(88306.00+(.391*(income2-297350.00));
}
}否则{
System.out.println(“错误。重试”);
}
}
}

如果您对C风格的打印感到满意(这正是我在此推荐的),您可以使用System.out.printf(),它与C的printf()非常相似


如果您对C风格的打印感到满意(这正是我在这里推荐的),您可以使用System.out.printf(),它与C的printf()非常相似


如果您对C风格的打印感到满意(这正是我在这里推荐的),您可以使用System.out.printf(),它与C的printf()非常相似


如果您对C风格的打印感到满意(这正是我在这里推荐的),您可以使用System.out.printf(),它与C的printf()非常相似

使用十进制格式:

java.text.DecimalFormat formatter = new java.text.DecimalFormat( "$###,###,###,##0.00";-$###,###,###,##0.00" );
formatter.format( 4060.3435 );
使用十进制格式:

java.text.DecimalFormat formatter = new java.text.DecimalFormat( "$###,###,###,##0.00";-$###,###,###,##0.00" );
formatter.format( 4060.3435 );
使用十进制格式:

java.text.DecimalFormat formatter = new java.text.DecimalFormat( "$###,###,###,##0.00";-$###,###,###,##0.00" );
formatter.format( 4060.3435 );
使用十进制格式:

java.text.DecimalFormat formatter = new java.text.DecimalFormat( "$###,###,###,##0.00";-$###,###,###,##0.00" );
formatter.format( 4060.3435 );

由于浮点运算固有的不确定性,在知道“正确”答案很重要的数学运算中,应始终使用BigDecimal(税务程序将是一个很好的例子)

这个问题有一个很好的例子,请注意第一个答案:

由于浮点运算固有的不确定性,在知道“正确”答案很重要的数学运算中,应始终使用BigDecimal(税务程序将是一个很好的例子)

这个问题有一个很好的例子,请注意第一个答案:

由于浮点运算固有的不确定性,在知道“正确”答案很重要的数学运算中,应始终使用BigDecimal(税务程序将是一个很好的例子)

这个问题有一个很好的例子,请注意第一个答案:

由于浮点运算固有的不确定性,在知道“正确”答案很重要的数学运算中,应始终使用BigDecimal(税务程序将是一个很好的例子)

这个问题有一个很好的例子,请注意第一个答案:

首先:不要使用
浮点
双精度
计算货币值。请改用
大十进制

第二个问题:

要对值进行四舍五入,请使用以下公式(在我的示例中,我使用了
double
,但如果您不知道自己在做什么,请不要这样做):


此方法四舍五入到一个有效的小数位数。如果需要其他小数位数,则必须更改此实现。

首先:不要使用
float
double
来计算货币值。请改用
BigDecimal

System.out.println("Federal Income Tax:$" + (double) Math.round((88306.00 +(.391*(income2 - 297350.00))))) /100.0;
第二个问题:

要对值进行四舍五入,请使用以下公式(在我的示例中,我使用了
double
,但如果您不知道自己在做什么,请不要这样做):


此方法四舍五入到一个有效的小数位数。如果需要其他小数位数,则必须更改此实现。

首先:不要使用
float
double
来计算货币值。请改用
BigDecimal

System.out.println("Federal Income Tax:$" + (double) Math.round((88306.00 +(.391*(income2 - 297350.00))))) /100.0;
第二个问题:

要对值进行四舍五入,请使用以下公式(在我的示例中,我使用了
double
,但如果您不知道自己在做什么,请不要这样做):


此方法四舍五入到一个有效的小数位数。如果需要其他小数位数,则必须更改此实现。

首先:不要使用
float
double
来计算货币值。请改用
BigDecimal

System.out.println("Federal Income Tax:$" + (double) Math.round((88306.00 +(.391*(income2 - 297350.00))))) /100.0;
第二个问题:

要对值进行四舍五入,请使用以下公式(在我的示例中,我使用了
double
,但如果您不知道自己在做什么,请不要这样做):


此方法四舍五入到一个有效的小数位。如果需要其他小数位,则必须更改此实现。

正如其他人所说:要么使用BigDecimal,要么——在大多数情况下更好的解决方案——使用便士而不是美元进行计算。这将立即消除大多数四舍五入问题!

正如others说:要么使用BigDecimal,要么——在大多数情况下是更好的解决方案——用
System.out.println("Federal Income Tax:$" + (double) Math.round((88306.00 +(.391*(income2 - 297350.00))))) /100.0;