首页 > 解决方案 > 如何将双打提升到力量

问题描述

无法弄清楚如何将公式提高到幂。我也在java中导入了java.lang.Math。我只是不断收到“数学”上的 Sytax 错误删除此标记,并且无法在原始数据类型双精度错误上调用 pow(double)

这是假设贷款 30 年的公式

年金系数 = (0.003125*(1+0.003125)^360)/(((1+0.003125)^360)-1) 360 是 30 年时间 12 个月获得每月付款

import java.util.Scanner;
import java.lang.Math;
public class HW3Method {

    public static void main(String[] args) {
        // main method for user inputs
        Scanner info = new Scanner(System.in);
        System.out.println("Enter the starting annual rate as a percent (n.nnn)");
        double startRate = info.nextDouble();
        System.out.println("Enter the ending annual rate as a percent (n.nnn)");
        double endRate  = info.nextDouble();
        System.out.println("Enter the annual intrest rate increments as a percent (n.nnn)");
        double rateIncrease = info.nextDouble();
        System.out.println("Enter the first term in years for calculating payments");
        double firstTerm = info.nextDouble();
        System.out.println("Enter the last term in years for calculating payments");
        double lastTerm = info.nextDouble();
        System.out.println("Enter the term increment in years");
        int termIncrement = info.nextInt();
        System.out.println("Enter the loan amount");
        double loanAmount = info.nextDouble();
        double mtp = firstTerm * 12;

    }

    public double calcAnnuity(double mtp ) {
        double annuityFactor = (0.003125*(1+0.003125)Math.pow(mtp));

        return annuityFactor;
    }

}

标签: java

解决方案


解释

您使用的方法Math.pow错误。它需要两个参数,基数和指数。你写了:

0.003125 * (1 + 0.003125) Math.pow(mtp)

但是你需要写:

0.003125 * Math.pow(1.0 + 0.003125, mtp)

笔记

请注意,1.0 + 0.003125可以简化为 just 1.003125,因此:

0.003125 * Math.pow(1.003125, mtp)

更好的是将该神奇数字存储为常数,然后您只需要更改一个变量而不是很多:

private static final int FACTOR = 0.003125;

然后使用该常量:

FACTOR * Math.pow(1.0 + FACTOR, mtp)

文档

来自Math.pow的官方文档:

public static double pow​(double a, double b)

返回第一个参数的第二个参数次幂的值。特别案例: [...]


推荐阅读