我正在传递一个名为value的参数。我想知道value是否为浮点数。 到目前为止,我有以下代码:
if (!isNaN(value))
{
alert('this is a numeric value but not sure if it is a float.');
}
如何进一步将该字符串转换为可以评估为浮点数的内容?
我正在传递一个名为value的参数。我想知道value是否为浮点数。 到目前为止,我有以下代码:
if (!isNaN(value))
{
alert('this is a numeric value but not sure if it is a float.');
}
如何进一步将该字符串转换为可以评估为浮点数的内容?
像这样:
if (!isNaN(value) && value.toString().indexOf('.') != -1)
{
alert('this is a numeric value and I\'m sure it is a float.');
}
toString
来获取不变格式或toLocaleString
来获取特定格式 - 因此,如果您可以确保字符串中的数字使用toString
,则此答案就可以了。但是,如果您有用户输入,则此答案中的测试仅会找到不变格式,但用户可能希望千位分隔符或其文化小数指示器起作用。 - KeithparseFloat
函数。
如果传递的值以浮点数形式开始,函数将返回转换为浮点数的值,否则它将返回 NaN。
类似下面这样的内容:
function beginsWithFloat(val) {
val = parseFloat(val);
return ! isNaN(val);
}
console.log(beginsWithFloat("blabla")); // shows false
console.log(beginsWithFloat("123blabla")); // shows true
parseFloat('2016-03-01')
返回 true。咦?这不是一个数字,而是一个日期! - MichaelparseFloat
将像 "123blabla" 这样的字符串视为数字。 - Flimm以下函数还会检查格式。例如,JavaScript 内置的 parseInt
和 parseFloat
函数也会解析包含非数字字符的字符串,上述函数对此有影响。
// For example, following code will work
var n = parseInt('123asd');
n == 123
对于这样的字符串,这些函数将返回false
。
function isFloat(val) {
var floatRegex = /^-?\d+(?:[.,]\d*?)?$/;
if (!floatRegex.test(val))
return false;
val = parseFloat(val);
if (isNaN(val))
return false;
return true;
}
function isInt(val) {
var intRegex = /^-?\d+$/;
if (!intRegex.test(val))
return false;
var intVal = parseInt(val, 10);
return parseFloat(val) == intVal && !isNaN(intVal);
}
/^-?\d+([.,]?\d+)?$/
。顺便一提,它也可以匹配整数。 - haffla/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/
来源:https://www.regular-expressions.info/floatingpoint.html - Jan检查一个字符串是否为整数或者浮点数
function isFloat(n) {
return parseFloat(n.match(/^-?\d*(\.\d+)?$/))>0;
}
//alert(isFloat("3.444"));
/^[0-9]+(\.)?[0-9]*$/.test(number)
//
之间的所有内容都是正则表达式。
/^
表示匹配从单词开头开始,$/
表示匹配以该单词结尾。如果您认为该单词不能以数字0开头,则表达式将如下所示:[1-9][0-9]*
[0-9]+
表示该单词必须以至少一个数字开头。
注意:*
表示零个或多个,+
表示一个或多个,?
表示一个或没有。
到此为止,表达式为/^[1-9][0-9]*$/
,这只会验证整数。
要测试数字中是否有句点(.),我们需要在表达式中使用\.
。 .
是特殊字符,可以匹配任何内容,而\.
仅匹配句点。
最后,另一个字符类[0-9]*
将与零个或多个数字匹配。
测试用例
/^[0-9]+(\.)?[0-9]$/.test("21.38a") // ==> false
/^[0-9]+(\.)?[0-9]$/.test("21.38") // ==> true
/^[0-9]+(\.)?[0-9]$/.test("y2781.68") // ==> false
/^[0-9]+(\.)?[0-9]$/.test("2781r.68") // ==> false
Number.prototype.isFloat = function() {
return (this % 1 != 0);
}
var floatValue = parseFloat("2.13");
var nonFloatValue = parseFloat("11");
console.log(floatValue.isFloat()); // will output true
console.log(nonFloatValue.isFloat()); // will output false
JS中像2.00
这样的数值不能被视为浮点数,或者更确切地说,在JS中每个数字都是浮点数。
Math.round(Number.MAX_VALUE - 0.001) === Number.MAX_VALUE - 0.001
(实际上,您可以使用此“四舍五入值方程”检查替换上面的模块方法)。 - Powerslave使用这个:
var isNumber = /^\d+\.\d+$/.test(value);
function checkFloat(value) {
let parsed = Number.parseFloat(value);
return (!Number.isNaN(parsed)) && (!Number.isInteger(parsed))
}
检查字符串是否为浮点数(避免整数值)
function isFloat(n) {
if( n.match(/^-?\d*(\.\d+)?$/) && !isNaN(parseFloat(n)) && (n%1!=0) )
return true;
return false;
}
var nonfloat = isFloat('12'); //will return false
var nonfloat = isFloat('12.34abc'); //will return false
var float = isFloat('12.34'); //will return true
如果您需要检查值是整数还是浮点数:
function isFloatOrInt(n) {
return !isNaN(n) && n.toString().match(/^-?\d*(\.\d+)?$/);
}
value
是怎么传递的?是通过表单还是其他方式? - David G