我有該計算這是目前在JavaScript和這裏後產生許多一些代碼行是代碼:從JavaScript轉換爲Java,但沒有給予相同的輸出
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代碼產生:number: 2.39
雖然Java代碼產生number: 2
爲什麼我會得到兩個不同的值?如果需要,我會發布cpi[to]
,cpi[from]
,to
和from
的值。
q被聲明爲雙重地方? –
請發佈'cpi'的定義,也許它是一個'int []',整數除法是一個商。 – rgettman
嘗試改變'q =(q-1)* 100.0;'和'q = Math.round(q * 100.0)/100.0;' – fvdalcin