我有以下函数来计算cpm
功能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 在txtcost 3000中,您得到的结果是3.000但是,如果您在任何数字中使用逗号,则问题就会出现,例如
如果你投入 txtviews 1,000,000 并以txtcost 3,000
然后结果将是0.000003
这不是一个正确的值,任何想法为什么??
由于
答案 0 :(得分:0)
SELECT
SUBSTRING_INDEX(`users`.`email`, '@', -1) col1,
count(1)
FROM `users`
GROUP BY 1
使用的数字格式无法将逗号识别为千位分隔符。之后的一切都被忽略了。
parseFloat
的处理方式与parseFloat("1,000,000")
相同,即为parseFloat("1P000P000");
。
来自MDN:
如果遇到符号(+或 - ),数字(0-9),小数点或指数以外的字符,则返回到该点的值并忽略该字符和所有后续字符。
答案 1 :(得分:0)
这应该有助于摆脱逗号并将您的值转换为数字
nc = parseFloat(nc.replace(/,/g, '')); //get rid of commas
nv = parseFloat(nv.replace(/,/g, ''));
var result = nc / nv/1000;
答案 2 :(得分: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);
}
}