parseFloat 与数字后的字符[重复]
Posted
技术标签:
【中文标题】parseFloat 与数字后的字符[重复]【英文标题】:parseFloat with characters after number [duplicate] 【发布时间】:2020-02-20 16:36:12 【问题描述】:我有一个输入,用户输入一个数字、整数或浮点数。我想知道它的数字是否正确,例如,检查输入2r
是否不正确。我的第一种方法是使用parseFloat
,但它并没有抱怨:
parseFloat('2r') // returns 2
其实这是docs的预期行为
如何检查2r
是否有误?
【问题讨论】:
【参考方案1】:这是预期的行为 - parseFloat 和类似的行为将忽略实数之后的任何“垃圾”。
如果您需要从整体上验证这是一个实数,那么可以使用多种策略,其中最简单的方法是尝试数学运算,例如乘以一。
【讨论】:
'2r' + 0
只会导致'2r0'
...
正如迈克所说,这是预期的行为。见developer.mozilla.org/en-US/docs/Web/javascript/Reference/…。使用 Number() 函数进行更严格的解析,如本参考中所述。
parseFloat('2r' + 0) 再次返回 2
对不起,小姐记得 - parseFloat('2r' * 1) 给出 NaN【参考方案2】:
这不是parseFloat
的错误,看起来你在追求别的东西。
试试号码;
Number('2r'); // returns Nan
【讨论】:
谢谢。那就是,我需要的。Number
和 parseFloat
之间的讨论在此继续:***.com/questions/12227594/…【参考方案3】:
它是well documented
如果 parseFloat 遇到加号 (+) 以外的字符,则减号 符号 (- U+002D HYPHEN-MINUS)、数字 (0–9)、小数点 (.) 或 指数(e 或 E),它返回该字符之前的值,忽略 无效字符及其后面的字符。
以下示例均返回 3.14:
parseFloat(3.14);
parseFloat('3.14');
parseFloat(' 3.14 ');
parseFloat('314e-2');
parseFloat('0.0314E+2');
parseFloat('3.14some non-digit characters');
parseFloat( toString: function() return "3.14" );
【讨论】:
以上是关于parseFloat 与数字后的字符[重复]的主要内容,如果未能解决你的问题,请参考以下文章