带逗号和点的小数之间的区别 Javascript
Difference between decimal number with comma and dot Javascript
如果值 >= 0,我应该验证输入表单测试。
我使用 jQuery 获取值并使用简单的 if 语句进行验证。像这样:
var value = $('#'+this.id).val();
console.log("value is " + value );
if(value >=0 ){
console.log("true");
}else{
console.log("false");
}
当用户用逗号或点插入十进制数时出现问题。
如果用户插入 1.234
结果是 true
而如果插入 1,234
结果是 false
它们有什么区别?
我做了一个简单的Fiddle来更好地解释这个案例。
http://jsfiddle.net/zzm8zno5/4/
我也验证了值的类型;我尝试用 Number(value)
转换为数字,但没有任何变化
抱歉我的问题,也许是微不足道的,但我不明白为什么会这样
Javascript 无法将逗号识别为小数点分隔符。您必须使用点,.
。
为此,您可以使用 replace()
更改值中的逗号。您还需要使用 parseFloat()
来比较值,否则您是在比较数字 (0
) 和字符串 ('1.234'
)。试试这个:
var value = parseFloat($(this).val().replace(',', '.'));
最后,请注意 jQuery 对象中 this
的使用。由于您已经有了对该元素的引用,因此您不需要构建另一个字符串选择器。如果您愿意,可以进一步缩短为 this.value
更新
假设 1,234
的意思是 1234
并且不用作小数点分隔符,那么您需要删除 ,
而无需替换:
var value = parseFloat($(this).val().replace(',', ''));
Javascript 只知道 64 位双精度浮点变量。
您的逗号将双精度数拆分为两位小数。
您需要将输入的 (, 替换为 .)
我同意@Rory 关于删除逗号 (',') 的观点,只是您需要将其替换为点 ('.')。我相信你想要发生的是只得到数字,而不是用点代替逗号。
1,234 = 1234 and not 1.234
只使用这个:
var value = parseFloat($(this).val().replace(',', ''));
这是@rory 的回答JSFiddel update
如果值 >= 0,我应该验证输入表单测试。
我使用 jQuery 获取值并使用简单的 if 语句进行验证。像这样:
var value = $('#'+this.id).val();
console.log("value is " + value );
if(value >=0 ){
console.log("true");
}else{
console.log("false");
}
当用户用逗号或点插入十进制数时出现问题。
如果用户插入 1.234
结果是 true
而如果插入 1,234
结果是 false
它们有什么区别?
我做了一个简单的Fiddle来更好地解释这个案例。
http://jsfiddle.net/zzm8zno5/4/
我也验证了值的类型;我尝试用 Number(value)
转换为数字,但没有任何变化
抱歉我的问题,也许是微不足道的,但我不明白为什么会这样
Javascript 无法将逗号识别为小数点分隔符。您必须使用点,.
。
为此,您可以使用 replace()
更改值中的逗号。您还需要使用 parseFloat()
来比较值,否则您是在比较数字 (0
) 和字符串 ('1.234'
)。试试这个:
var value = parseFloat($(this).val().replace(',', '.'));
最后,请注意 jQuery 对象中 this
的使用。由于您已经有了对该元素的引用,因此您不需要构建另一个字符串选择器。如果您愿意,可以进一步缩短为 this.value
更新
假设 1,234
的意思是 1234
并且不用作小数点分隔符,那么您需要删除 ,
而无需替换:
var value = parseFloat($(this).val().replace(',', ''));
Javascript 只知道 64 位双精度浮点变量。 您的逗号将双精度数拆分为两位小数。
您需要将输入的 (, 替换为 .)
我同意@Rory 关于删除逗号 (',') 的观点,只是您需要将其替换为点 ('.')。我相信你想要发生的是只得到数字,而不是用点代替逗号。
1,234 = 1234 and not 1.234
只使用这个:
var value = parseFloat($(this).val().replace(',', ''));
这是@rory 的回答JSFiddel update