Java pow 不对最终值进行四舍五入
Java pow without rounding up the final value
我正在尝试为我的一个函数写一个公式,我需要将 X 提高到 Y 的幂。我使用的值非常小,一旦我使用 pow 函数就会四舍五入数学、BigInteger 和 BigDecimal。
例如,如果我使用以下值,它将 return 1000 而它应该 return 1006.931669 !
T0 = 1000,TN = 1,k = 1,N = 1000
double X = (finalTemp/initialTemp);
double A = Math.pow(X, (k/n));
double tk = initialTemp * A;
根据计算器输出是正确的
public class Main
{
public static void main(String[] args) {
double finalTemp = 1.0;
double initialTemp = 1000.0;
double k = 1.0;
double n = 1000.0;
double X = (finalTemp/initialTemp);
double A = Math.pow(X, (k/n));
double tk = initialTemp * A;
System.out.println(tk);
}
}
输出为993.1160484209338
它们被划分为整数运算。因此,整数 a 除以整数 b 得到 b 适合 a 的次数,如果操作数的类型为双精度,则执行 "real" 除法。
double X = (finalTemp/(double)initialTemp);
double A = Math.pow(X, (k/(double)n));
double tk = initialTemp * A;
我正在尝试为我的一个函数写一个公式,我需要将 X 提高到 Y 的幂。我使用的值非常小,一旦我使用 pow 函数就会四舍五入数学、BigInteger 和 BigDecimal。
例如,如果我使用以下值,它将 return 1000 而它应该 return 1006.931669 ! T0 = 1000,TN = 1,k = 1,N = 1000
double X = (finalTemp/initialTemp);
double A = Math.pow(X, (k/n));
double tk = initialTemp * A;
根据计算器输出是正确的
public class Main
{
public static void main(String[] args) {
double finalTemp = 1.0;
double initialTemp = 1000.0;
double k = 1.0;
double n = 1000.0;
double X = (finalTemp/initialTemp);
double A = Math.pow(X, (k/n));
double tk = initialTemp * A;
System.out.println(tk);
}
}
输出为993.1160484209338
它们被划分为整数运算。因此,整数 a 除以整数 b 得到 b 适合 a 的次数,如果操作数的类型为双精度,则执行 "real" 除法。
double X = (finalTemp/(double)initialTemp);
double A = Math.pow(X, (k/(double)n));
double tk = initialTemp * A;