在 Java 中尝试使用数学幂时出错
Error when trying to use math powers in Java
我正在尝试计算方程式 FinalValue = InitialDeposit * (1 + r)^t
,其中 t = years
和 r = rate
,但我很难找出正确的格式。
这就是我所拥有的,但它一直在 printf
方法中抛出转换错误。
这是我的代码:
package cs520.hw2.part1;
import java.lang.Math;
public class BankingProceduralStyle {
public static void main(String[] args) {
// bankACalc;
int bankAyears = 3;
double bankADeposit = 5000;
double bankARate = 0.04;
double bankAFinalValue = bankADeposit * (1 + bankARate) * Math.pow(0.04, 3);
System.out.printf("BankA %s CD of %.2f at 4.00% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
}
}
问题出在行 -
System.out.printf("BankA %s CD of %.2f at 4.00% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
如你所见,你已经写了4.00% rate
。现在这被解释为 %r
。删除 %
,或添加另一个 %
,你应该可以开始了
替换
System.out.printf("BankA %s CD of %.2f at 4.00% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
和
System.out.printf("BankA %d CD of %.2f at 4.00%% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
原因
您需要转义 4.00%
中的 '%' 符号,否则会出现转换异常。要转义它,您需要在它之前使用一个额外的 %
。
首先,你的计算有误
double bankAFinalValue = bankADeposit * Math.pow((1 + bankARate), bankAyears);
然后修正你的 printf 语句:4.00%
应该是 4.00%%
.
提供 %% 即可获得所需的格式。
import java.lang.Math;
class Ideone {
public static void main(String[] args) {
// bankACalc;
int bankAyears = 3;
double bankADeposit = 5000;
double bankARate = 0.04;
double bankAFinalValue =bankADeposit *(1 + bankARate)*Math.pow(0.04,5);
System.out.printf("BankA %s CD of %.2f at 4.00%% rate is worth $%.6f ", bankAyears, bankADeposit, bankAFinalValue);
}
}
Ideone link 上述程序
http://ideone.com/S4CjJa
我正在尝试计算方程式 FinalValue = InitialDeposit * (1 + r)^t
,其中 t = years
和 r = rate
,但我很难找出正确的格式。
这就是我所拥有的,但它一直在 printf
方法中抛出转换错误。
这是我的代码:
package cs520.hw2.part1;
import java.lang.Math;
public class BankingProceduralStyle {
public static void main(String[] args) {
// bankACalc;
int bankAyears = 3;
double bankADeposit = 5000;
double bankARate = 0.04;
double bankAFinalValue = bankADeposit * (1 + bankARate) * Math.pow(0.04, 3);
System.out.printf("BankA %s CD of %.2f at 4.00% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
}
}
问题出在行 -
System.out.printf("BankA %s CD of %.2f at 4.00% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
如你所见,你已经写了4.00% rate
。现在这被解释为 %r
。删除 %
,或添加另一个 %
,你应该可以开始了
替换
System.out.printf("BankA %s CD of %.2f at 4.00% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
和
System.out.printf("BankA %d CD of %.2f at 4.00%% rate is worth $%.2f ", bankAyears, bankADeposit, bankAFinalValue);
原因
您需要转义 4.00%
中的 '%' 符号,否则会出现转换异常。要转义它,您需要在它之前使用一个额外的 %
。
首先,你的计算有误
double bankAFinalValue = bankADeposit * Math.pow((1 + bankARate), bankAyears);
然后修正你的 printf 语句:4.00%
应该是 4.00%%
.
提供 %% 即可获得所需的格式。
import java.lang.Math;
class Ideone {
public static void main(String[] args) {
// bankACalc;
int bankAyears = 3;
double bankADeposit = 5000;
double bankARate = 0.04;
double bankAFinalValue =bankADeposit *(1 + bankARate)*Math.pow(0.04,5);
System.out.printf("BankA %s CD of %.2f at 4.00%% rate is worth $%.6f ", bankAyears, bankADeposit, bankAFinalValue);
}
}
Ideone link 上述程序 http://ideone.com/S4CjJa