2016-04-24 84 views
0

我有以下函數來計算CPM爲什麼html文本字段的值在逗號時發生變化?

功能CalCPM() {

var nv = document.getElementById('txtviews').value; 
    var nc = document.getElementById('txtcost').value; 
    var result =parseFloat(nc)/parseFloat(nv)/1000; 
    if(!isNaN(result)) 
     { 
     document.getElementById('cpm').value = result.toFixed(4); 
     } 

}

當你把逗號的數字它做工精細預期,意味着 如果你把在 txtviews 1000000 and in txtcost 3000 you get a correct result that is 3.000

但是,如果您使用co MMAS中的任何數字,那麼問題開始,像

,如果你把在 txtviews百萬 和txtcost 3000

那麼結果將是0.000003

這是不正確的值,任何想法爲什麼?

感謝

回答

0

使用parseFloat不承認逗號作爲千位分隔符的數字格式。之後的所有內容都被忽略。

parseFloat("1,000,000")的處理方式與parseFloat("1P000P000");相同,即1

MDN

如果遇到比的標誌以外的字符(+或 - ),數字(0-9),一個小數點,或指數,它返回值直到該指向並忽略該角色和所有後續角色。

0

這將有助於擺脫逗號和轉換您的值數點

nc = parseFloat(nc.replace(/,/g, '')); //get rid of commas 
nv = parseFloat(nv.replace(/,/g, '')); 
var result = nc/nv/1000; 
0

使用REG-EX,這將是解決方案:

function CalCPM() 
{ 
    var nv = (document.getElementById('txtviews').value).replace(/,/g,''); 
    var nc = (document.getElementById('txtcost').value).replace(/,/g,''); 
    var result =parseFloat(nc)/parseFloat(nv)/1000; 
    if(!isNaN(result)) 
    { 
    document.getElementById('cpm').value = Number(result).toFixed(4); 
    } 
} 
相關問題