我有一些代码行在计算后生成一个数字,当前在 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]
、to
和 from
值。
最佳答案
在这一行
q = Math.round(q*100)/100;
除法运算的两个操作数都是整型,因此结果也是整型。使用 100.0 作为除数将结果强制为 double
。
关于java - 从 JavaScript 转换为 Java 但没有给出相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305198/