如何在Java中四舍五入到最接近的分

如何在Java中四舍五入到最接近的分,java,Java,所以我正在写一个程序,做一些财务计算。但是,因为我使用double作为数据类型,所以美分不是四舍五入的。以下是源代码: public class CentRoundingTest { public static void main(String[] args) { System.out.println("TextLab03, Student Version\n"); double principle = 259000; double an

所以我正在写一个程序,做一些财务计算。但是,因为我使用double作为数据类型,所以美分不是四舍五入的。以下是源代码:

public class CentRoundingTest {
    public static void main(String[] args) {
        System.out.println("TextLab03, Student Version\n");

        double principle = 259000;
        double annualRate = 5.75;
        double numYears = 30;

        // Calculates the number of total months in the 30 years which is the
        // number of monthly payments.
        double numMonths = numYears * 12;

        // Calculates the monthly interest based on the annual interest.
        double monthlyInterest = 5.75 / 100 / 12;

        // Calculates the monthly payment.
        double monthlyPayment = (((monthlyInterest * Math.pow(
                (1 + monthlyInterest), numMonths)) / (Math.pow(
                        (1 + monthlyInterest), numMonths) - 1)))
                        * principle;

        // calculates the total amount paid with interest for the 30 year time.
        // period.
        double totalPayment = monthlyPayment * numMonths;

        // Calculates the total interest that will accrue on the principle in 30
        // years.
        double totalInterest = monthlyPayment * numMonths - principle;

        System.out.println("Principle: $" + principle);
        System.out.println("Annual Rate: " + annualRate + "%");
        System.out.println("Number of years: " + numYears);
        System.out.println("Monthly Payment: $" + monthlyPayment);
        System.out.println("Total Payments: $" + totalPayment);
        System.out.println("Total Interest: $" + totalInterest);
    }
}

我的指导老师也不希望使用DecimalFormat类。我想通过执行以下操作获得仙值:variable Math.floor(variable),然后将该值四舍五入到最接近的百分之一,然后将其相加。

如果不使用JDK提供的库类(通常会使用),用于算术四舍五入的伪代码是:

  • 乘以100,等于美分
  • 加(如果数字为负数,则减)0.5,以便下一步四舍五入到最接近的分
  • 转换为
    int
    ,截断小数部分
  • 除以100d,给你美元)

现在编写一些代码。

如果不使用JDK提供的库类(通常用于此目的),用于算术舍入的伪代码是:

  • 乘以100,等于美分
  • 加(如果数字为负数,则减)0.5,以便下一步四舍五入到最接近的分
  • 转换为
    int
    ,截断小数部分
  • 除以100d,给你美元)

现在编写一些代码。

如果不使用JDK提供的库类(通常用于此目的),用于算术舍入的伪代码是:

  • 乘以100,等于美分
  • 加(如果数字为负数,则减)0.5,以便下一步四舍五入到最接近的分
  • 转换为
    int
    ,截断小数部分
  • 除以100d,给你美元)

现在编写一些代码。

如果不使用JDK提供的库类(通常用于此目的),用于算术舍入的伪代码是:

  • 乘以100,等于美分
  • 加(如果数字为负数,则减)0.5,以便下一步四舍五入到最接近的分
  • 转换为
    int
    ,截断小数部分
  • 除以100d,给你美元)

现在去写一些代码。

如果不能使用
DecimalFormat
类,可以使用
printf()

public class CentRoundingTest{
公共静态void main(字符串[]args){
System.out.println(“textlab 03,学生版本\n”);
双原理=259000;
双年率=5.75;
双颈髓=30;
//计算30年中的总月数,即
//每月付款的数量。
双努姆=努米*12;
//根据年利息计算月利息。
双月利率=5.75/100/12;
//计算每月付款。
双月付款=(((monthlyInterest*Math.pow)(
(1+月利息),月利息/(数学功率(
(1+月利息),月数)-1)
*原则;
//计算30年内支付的利息总额。
//句号。
双倍总付款=每月付款*个月;
//计算30年内按本金计提的总利息
//年。
双倍总利息=月付款*月数-原则;
印刷量(“原则”,原则);
打印百分比(“年率”,年率);
打印计数(“年数”,单位为米);
打印金额(“每月付款”,每月付款);
打印金额(“总付款”,总付款);
打印金额(“总利息”,总利息);
}
公共静态无效打印百分比(字符串标签,双百分比){
//System.out.printf(“%-16s:%,.2f%%%n”,标签,百分比);
打印编号(标签,百分比,“,“%”,16);
}
公共静态无效打印计数(字符串标签,双重计数){
//System.out.printf(“%-16s:%,.2f%n”,标签,计数);
打印编号(标签,计数,“,”,16);
}
公共静态无效打印金额(字符串标签,双倍金额){
//System.out.printf(“%-16s:$%,.2f%n”,标签,金额);
打印编号(标签,金额,“$”,“,”,16);
}
公共静态void printNumber(字符串标签、双精度值、字符串前缀、字符串后缀、int-labelWidth){
String format=String.format(“%%-%ds:%%s%%,.2f%%s%%n”,标签宽度);
System.out.printf(格式、标签、前缀、值、后缀);
}
}

如果不能使用
DecimalFormat
类,可以使用
printf()

public class CentRoundingTest{
公共静态void main(字符串[]args){
System.out.println(“textlab 03,学生版本\n”);
双原理=259000;
双年率=5.75;
双颈髓=30;
//计算30年中的总月数,即
//每月付款的数量。
双努姆=努米*12;
//根据年利息计算月利息。
双月利率=5.75/100/12;
//计算每月付款。
双月付款=(((monthlyInterest*Math.pow)(
(1+月利息),月利息/(数学功率(
(1+月利息),月数)-1)
*原则;
//计算30年内支付的利息总额。
//句号。
双倍总付款=每月付款*个月;
//计算30年内按本金计提的总利息
//年。
双倍总利息=月付款*月数-原则;
印刷量(“原则”,原则);
打印百分比(“年率”,年率);
打印计数(
TextLab03, Student Version

Principle       : $259,000.00
Annual Rate     : 5.75%
Number of years : 30.00
Monthly Payment : $1,511.45
Total Payments  : $544,123.33
Total Interest  : $285,123.33