检查数字字符串是否包含小数点?

3
在使用sqrt()函数后,
如何检查结果是否只包含整数?
我在考虑使用正则表达式检查小数——如果包含小数,那意味着它没有均匀地根为整数。这对我来说已经足够信息了。
但是这段代码不起作用...
result = sqrt(stringContainingANumber);
decimal = new RegExp(".");
document.write(decimal.test(result)); 

我敢打赌,有其他方式可以完成相同的事情。


可能是重复的问题:如何检查一个数字是否有小数点/是否为整数 - Benny Bottema
7个回答

7

. 意味着任何字符。

你需要引用点号。"\."

或者你可以进行测试

if (result > Math.floor(result)) {
   // not an decimal
}

那对我来说最有意义。谢谢啊,伙计! - monkey blot
当然,由于JavaScript数字是双精度浮点数,具有约15位数字精度。因此,您必须注意某些结果范围的数字误差。 - stefan bachert
1
“42.00”是什么意思? - V Maharajh

5
您可以使用%运算符:
result % 1 === 0;  // rest after dividing by 1 should be 0 for whole numbers

但是,我假设这里的result已经是一个数字了,因为它是sqrt()函数的结果。我不确定您是否正在解决OP所询问的问题。 - jfriend00
@jfriend00:很好的发现。那么使用“%”运算符就更加直观了,我猜。 - pimvdb

4
使用 indexOf() 方法:
​var myStr = "1.0";
myStr.indexOf("."); // Returns 1

// Other examples
myStr.indexOf("1"); // Returns 0 (meaning that "1" may be found at index 0)
myStr.indexOf("2"); // Returns -1 (meaning can't be found)

1
对于这个特定的问题,使用.indexOf()比正则表达式更简单快速,建议使用。 - jfriend00

1
"

“.”在正则表达式语法中表示“任意字符”,需要使用“\.”进行转义。

"

0

如果您想检查字符串是否包含十进制数字,可以尝试以下方法

var num = "123.677";
if (!isNaN(Number(num)) {
alert("decimal no");
}
else {
alert("Not a decimal number");
}

0

抱歉,回答晚了。但我希望这能有所帮助。

function isThisDecimal(val){
  if (!(val.indexOf(".") == -1)){
    return true; // decimal 
  }
  return false; // number
}

console.log(isThisDecimal("12.00")); //true
console.log(isThisDecimal("12.12")); //true
console.log(isThisDecimal("12"));// false

0
如果它是一个字符串,我们可以使用split函数,然后检查返回的数组的长度。如果长度大于1,则有小数点,否则没有 :)。但是这对数字不起作用 :(。请参见最后一次编辑。现在它也适用于字符串 :)
function checkDecimal() {
    var str = "202.0";
    var res = str.split(".");
    alert(res.length >1);
    var str1 = "20";

    alert(str1.split(".").length>1);
 }

希望能对某些人有所帮助。 愉快的学习 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接