使用 printf 设置百分比格式


import java.util.Scanner;
public class Taxes {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.printf("Enter the employees first name: ");
        Scanner input = new Scanner(System.in);
        String fName = input.nextLine();
        System.out.printf("Enter the employees last name: ");
        String lName = input.nextLine();
        System.out.printf("Enter the hours worked for the week: ");
        double hours = input.nextDouble();
        System.out.printf("Enter the hourly pay rate: ");
        double pay = input.nextDouble();
        double gross = hours * pay;
        System.out.printf("Enter the federal tax withholding: ");
        double fed = input.nextDouble();
        double fTax = gross * fed;
        System.out.printf("Enter the state tax withholding: ");
        double state = input.nextDouble();
        double sTax = gross * state;
        double Ttax = sTax + fTax;
        double net = gross - Ttax;

        System.out.printf(
                "Employee Name:%s %snnHours Worked:%s hoursnnPay Rate:$%.2fnnGross pay:$%.2fnnDeductions: nntFederal Withholding:(%.2f%%)$%.2f nn"
                        + "tState Withholding:(%.2f%%)$%.2fnntTotal Witholding:$%.2fnnNet Pay:$%.2f",
                fName, lName, hours, pay, gross, fed, fTax, state, sTax, Ttax, net);
        input.close();
    }
}

我需要再声明两个变量,以使联邦和州预扣税显示为百分比。

示例 它们显示为 (00.20%)

我需要它们以整体百分比返回,例如 (20.00%)

我尝试在底部声明新变量,例如:

statewit = sTax * 100;
fedwit = fTax * 100;

让百分比按照我想要的方式返回,但它往往会在最后将该总数添加到净值中。

任何帮助将不胜感激,谢谢!

试试这个。

 double percent=12.34;
 System.out.printf("%.2f%%", percent);
 // or in different convention "percent as number *100" 
 System.out.printf("%.2f%%", percent*100.0);

编辑:您的问题可以分为两部分:

  1. 使用数字的约定(正常或百分比缩放 *100)

  2. 实际格式为字符串

顺便说一句,您的代码很长,几乎没有格式化。

Java 没有百分比值的特殊类型。类型:double,BigDecimal 可以与他的行为一起使用,或者整数类型,如果程序员保持整数约定,也可以使用整数类型

编辑:感谢科斯蒂斯·艾瓦利斯,逗号更正:)

最新更新