java - 从 JavaScript 转换为 Java 但没有给出相同的输出

标签 java javascript

我有一些代码行在计算后生成一个数字,当前在 JavaScript 中,代码如下:

if ( y2 != y1 )
{
    // calculate rate
    var f;
    var y;
    if ( y2 > y1 )
    {
        f = cpi[y2] / cpi[y1];
        y = y2 - y1;
    }
    else
    {
        f = cpi[y1] / cpi[y2];
        y = y1 - y2;
    }           
    var r = Math.pow(f, 1/y);
    r = (r-1)*100;
    r = Math.round(r*100) / 100;
    System.out.println( "number: " + r.toFixed(2) + "%." );
}

我将上面的JS代码转换为Java,代码如下:

DecimalFormat decimalFormat = new DecimalFormat("0.##");
    if (cpi[to] != cpi[from]) {
        double f, y;
        if (cpi[to] > cpi[from]) {
            f = cpi[to] / cpi [from];
            y = to - from;
        }
        else {
            f = cpi[from] / cpi[to];
            y = from - to;
        }
        q = Math.pow(f, 1/y);
        q = (q-1)*100;
        q = Math.round(q*100)/100;
        Toast.makeText(getApplicationContext(), "number: " + String.valueOf(decimalFormat.format(q)), 2000).show();
    }

JavaScript 代码生成:数字:2.39

当 Java 代码生成 number: 2

为什么我会得到两个不同的值?如果需要,我将发布 cpi[to]cpi[from]tofrom 值。

最佳答案

在这一行

q = Math.round(q*100)/100;

除法运算的两个操作数都是整型,因此结果也是整型。使用 100.0 作为除数将结果强制为 double

关于java - 从 JavaScript 转换为 Java 但没有给出相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305198/

相关文章:

java - 无法正确创建二叉树?

javascript - 将按钮的 ID 传递给表单

javascript - AngularJS - 解析的数据不会在嵌套状态组件中刷新

javascript - 在 three.js 中需要一个带纹理的圆圈

java - 需要在GWT中运行Java代码

java - 购买成功,但解码时出现 "Class not found": com. google.android.finsky.billing.lightpurchase.PurchaseParams

java - 在 java 中画线后 ActionListener 无法正常工作

java - 使用elasticsearch搜索最相似的字符串

javascript - Ruby/Sinatra/jQuery 应用程序未在 repl.it 中运行

javascript - 当窗口小于 448px 宽时,CSS 导致表单变得不可用