JavaScript 数字1.0转字符串后如何确保还是1.0呢?

一个让人头疼的问题,我想要匹配正整数,但不包含1.0这样的,于是想着先转字符串,然后正则去匹配点,结果失败了···任何形式的转换,1.0都会被转成1,而直接用1.0数字去正则匹配呢,它又无法匹配到点,好像内部是先转为字符串再匹配的。

请问有人遇到过类似的需求吗?怎么破呀,也不能用toFixed这样的函数,因为数字有可能不是小数。

阅读 4.4k
3 个回答

Math.floor(num) == num就行了,但1.0没法排除,也不可能排除,因为js里数字1.0和整数1是一个东西。字符串的话用断言咯

我自己一般很少用浮动数运算,浮点数的精度有问题。我都是用整数标示,如果是浮点数,最后在除100,后两位就是小数。

……源数据到底是number还是string

  • number: Number.isInteger
  • string: 正则表达式

还是说你是想匹配字面量?那只能把整个js文件喂给正则表达式。但是匹配字面量这种奇葩需求闻所未闻,如果是上司指派,建议跳槽。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题