【发布时间】:2013-12-30 19:11:15
【问题描述】:
我正在尝试用 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) 知道我做错了什么吗?
【问题讨论】:
-
您正在查看溢出,请尝试改用
BigInteger及其方法(并且您的公式执行错误)。 -
Math.pow(a + ( 1 + ( r / 100 )), t)与“Total = a(1+(r/100))^t”不同。正确的(第二个)等式将 1 和 2 之间的值提高到t;不正确的第一个提高(在你的例子中)25000 到 15。 -
您将获得计算中定义的结果。所以要么你的输入值是错误的,要么你的计算是错误的。你到底在期待什么?
-
其实是
(a+1+r/100)^t。 -
请接受答案。
标签: java accounting