Javascript 乘法中的NaN

Javascript 乘法中的NaN,javascript,Javascript,我正在尝试这个代码,但我得到了NaN a = unidade.val(); b = unitario.val(); //alert(a);5 //alert(b);50,00 $(total).val(a * b); //NaN 为什么??因为是一个int*float?您必须在乘法之前解析字符串,因为它总是返回一个字符串,并且无法将“50,00”自动转换为数字 parseFloat(“50,1”)为您提供50。如果这里的逗号是十进制分隔符,则必须将其替换为点 所以你可能需要 a = parse

我正在尝试这个代码,但我得到了NaN

a = unidade.val();
b = unitario.val();
//alert(a);5
//alert(b);50,00
$(total).val(a * b); //NaN

为什么??因为是一个
int*float

您必须在乘法之前解析字符串,因为它总是返回一个字符串,并且
无法将“50,00”
自动转换为数字

parseFloat(“50,1”)
为您提供
50
。如果这里的逗号是十进制分隔符,则必须将其替换为点

所以你可能需要

a = parseFloat(unidade.val().replace(",", ".");
b = parseFloat(unitario.val().replace(",", ".");
编辑:

如果您希望允许像
2.500,00
这样格式的数字,那么我建议使用以下代码:

function vf(str) {
   return parseFloat(str.replace(".", "").replace(",", "."));
}
a = vf(unidade.val());
b = vf(unitario.val());
但如果你有喜欢(或期待)美国符号的用户,这是危险的。如果字段包含逗号,我可能会坚持使用美式符号并显示错误


注意,HTML5提出了
,它强制用户键入数字,让您直接获取数字。请参阅。

看起来像是从
val()
函数中获取字符串

您可以使用
Number
,或
parseInt
,或
parseFloat
来强制转换类型

$(total).val(Number(a) * Number(b)); 

您必须在乘法之前解析字符串

注: 如果操作数是数字,则执行常规算术乘法,这意味着两个正或两个负等于一个正,而具有不同符号的操作数产生一个负。如果结果过高或过低,则结果为无穷大或–无穷大

如果任一操作数为NaN,则结果为NaN

如果无穷大乘以0,则结果为NaN

如果无穷大乘以除0以外的任何数字,则结果为无穷大或–无穷大,具体取决于第二个操作数的符号


如果无穷大乘以无穷大,结果就是无穷大。

Javascript只有数字。没有int和float。问题是如果我有这样的东西
2*2.500,00=5
,应该是
5.000,00