【问题标题】:Java pow without rounding up the final value [duplicate]Java pow 没有四舍五入最终值[重复]
【发布时间】:2019-03-27 11:42:05
【问题描述】:

我正在尝试为我的一个函数编写一个公式,我需要将我的 X 提高到 Y 的幂。我正在使用的值非常小,一旦我使用 Math 的 pow 函数就会被四舍五入, BigInteger 和 BigDecimal。

例如,如果我使用以下值,它将返回 1000,而应该返回 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;

【问题讨论】:

标签: java math formula


【解决方案1】:

它们被整数算术除法。因此,整数 a 除以整数 b 得到 b 适合 a 的次数,如果操作数的类型是双精度,则执行“实数”除法。

double X = (finalTemp/(double)initialTemp);
double A = Math.pow(X, (k/(double)n));
double tk = initialTemp * A;

【讨论】:

  • 你不应该也将n转换为double吗?
  • 是的,你需要投射。
  • 感谢您的解释,现在完全有道理了!
【解决方案2】:

根据计算器输出正确

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

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多