我传入了一个名为 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.');
}
您可以使用该parseFloat
功能。
如果传递的值以浮点数开头,则函数返回转换为浮点数的值,否则返回 NaN。
就像是:
function beginsWithFloat(val) {
val = parseFloat(val);
return ! isNaN(val);
}
console.log(beginsWithFloat("blabla")); // shows false
console.log(beginsWithFloat("123blabla")); // shows true
以下功能还检查格式。例如 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);
}
检查字符串是整数还是浮点数
function isFloat(n) {
return parseFloat(n.match(/^-?\d*(\.\d+)?$/))>0;
}
//alert(isFloat("3.444"));
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
像这样的值2.00
在 JS 中不能真正被认为是浮点数,或者更确切地说,每个数字都是 JS 中的浮点数。
就我而言,一个非常简单的正则表达式就可以了。
我需要验证用户的输入是否是有效的货币价值。我只是用了——
/^[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
用这个:
var isNumber = /^\d+\.\d+$/.test(value);
function checkFloat(value) {
let parsed = Number.parseFloat(value);
return (!Number.isNaN(parsed)) && (!Number.isInteger(parsed))
}
检查字符串是否为浮点数(避免使用 int 值)
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
只有value
作为字符串传入,我们才能完全确定它是否使用小数点。因为1.0
(作为数字)导致(作为字符串)结果1
完全相同。从那里我们可以找到它是否包含小数点,. 所以我们需要将参数作为字符串传递。"1.0"
"1.0"
.
value
value
如果是字符串,以下将起作用
if ( value.indexOf('.') > -1 ) { // value is a floating point
}
value.toString()
不会转向1.0
("1.0"
相反,它只会将其转向1
),因此通过字符串传递是最好的选择,因为它保留了所有字符。
如果您不想使用字符串,则无法将其捕获1.0
为浮点值。如果要测试数字是否为浮点值,请使用以下命令:
以下不适用于 1.0、1.00 等。
if ( value >>> 0 !== x ) { // value is a floating point
}
注意:您还应该检查!isNaN(value)
(我忽略了它以专注于更改)。
如果您需要检查 value 是 int 还是 float:
function isFloatOrInt(n) {
return !isNaN(n) && n.toString().match(/^-?\d*(\.\d+)?$/);
}
此函数返回字符串的数值,无论是 int 还是 float
function getNumericVal(str) {
if(isNaN(str)) return;
try {return parseFloat(str);}
catch(e) {return parseInt(str);}
}
直截了当:
if (parseFloat(value).toString() === value.toString()) {
...
}
使用这个 jquery 代码
<script>
$(document).ready(function () {
$(".allow_only_float").keypress(function (e) {
if (e.which != 46 && e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
e.preventDefault();//return false;
}
var avg = $('#<%=txtAverage.ClientID%>').val();
var idx = avg.indexOf(".");
if (idx > -1 && e.which == 46) {
e.preventDefault();//return false;
}
});
});
</script>
<body>
<input type='text' class='allow_only_float'>
</body>
function isFloat(inputString) {
const parsed = parseFloat(inputString);
return !isNaN(parsed) && parsed.toString() === inputString;
}
isFloat('.4') // false
isFloat('1.4') // true
isFloat('1.') // false
isFloat('1') // true
isFloat('asd') // false
isFloat('123asd') // false
if (!isNaN(value) && String(value).includes('.')) {
alert("it's a float");
let newFloatValue = parseFloat(value)
}