Java中奇怪的输出?

时间:2013-12-30 19:11:16

标签: java accounting

我正在尝试用Java创建一个基本的命令行会计应用程序,这是我到目前为止所提出的:

import java.util.Scanner;

public class Accounting {
public static void main(String[] args) {


    while(true){
      Scanner input = new Scanner(System.in);
        String userinput = input.nextLine();

        String[] parts = userinput.split(" ");
        String part1 = parts[0];
        String part2 = parts[1];
        String part3 = parts[2];

        int a = Integer.parseInt(part1);
        float r = Float.parseFloat(part2);
        int t = Integer.parseInt(part3);
        int Total = (int) Math.pow(a + ( 1 + ( r / 100 )), t);
        System.out.println(Total);

您输入3个输入数量,费率和时间。我被告知公式是Total = a(1+(r/100))^t。每当我输入像25000 6.9 15这样的输入时,我得到的数字超过20亿(2147483647)任何想法我做错了什么?

2 个答案:

答案 0 :(得分:4)

试试这样:

double total = a*Math.pow(1.0+(r/100.0), t);

答案 1 :(得分:0)

Math.pow(a + ( 1 + ( r / 100 )), t)与“Total = a(1+(r / 100))^ t”不同。正确的(第二)方程将1到2之间的值提高到t;不正确的第一个引发(在你的例子的情况下)25000到15。