我有一個表格可以讓我的客戶添加預算預測。一位知名用戶希望能夠以美元,千基金或兆美元顯示美元價值。JavaScript算術問題
我試圖用一組調用以下JavaScript函數的單選按鈕來達到這個目的,但是由於四捨五入使得結果看起來很糟糕。
任何意見將不勝感激!
林恩
function setDollars(new_mode)
{
var factor;
var myfield;
var myval;
var cur_mode = document.proj_form.cur_dollars.value;
if(cur_mode == new_mode)
{
return;
}
else if((cur_mode == 'd')&&(new_mode == 'kd'))
{
factor = "0.001";
}
else if((cur_mode == 'd')&&(new_mode == 'md'))
{
factor = "0.000001";
}
else if((cur_mode == 'kd')&&(new_mode == 'd'))
{
factor = "1000";
}
else if((cur_mode == 'kd')&&(new_mode == 'md'))
{
factor = "0.001";
}
else if((cur_mode == 'md')&&(new_mode == 'kd'))
{
factor = "1000";
}
else if((cur_mode == 'md')&&(new_mode == 'd'))
{
factor = "1000000";
}
document.proj_form.cur_dollars.value = new_mode;
var cur_idx = document.proj_form.cur_idx.value;
var available_slots = 13 - cur_idx;
var td_name;
var cell;
var new_value;
//Adjust dollar values for projections
for(i=1;i<13;i++)
{
var myfield = eval('document.proj_form.proj_'+i);
if(myfield.value == '')
{
myfield.value = 0;
}
var myval = parseFloat(myfield.value) * parseFloat(factor);
myfield.value = myval;
if(i < cur_idx)
{
document.getElementById("actual_"+i).innerHTML = myval;
}
}
呃,什麼問題? – 2010-06-02 22:24:32
@BlueRaja:我可以告訴你沒有使用JavaScript浮動。擁有2.10 + 5.15 = 7.249999999999999999999999999999999999999是很常見的。非常羞恥。我曾經做過一個網站,出售一個廣告,收費的話,不知何故.10美分200字等於19.999999999999999999美元。 – Satanicpuppy 2010-06-02 22:31:40
可能是FP舍入。 0.000001並不是0.000001,偶爾你會得到450.2500001這樣的結果,你想要450.25。 – cHao 2010-06-02 22:34:26