【发布时间】:2020-02-20 16:36:12
【问题描述】:
我有一个输入,用户输入一个数字、整数或浮点数。我想知道它的数字是否正确,例如,检查输入2r 是否不正确。我的第一种方法是使用parseFloat,但它并没有抱怨:
parseFloat('2r') // returns 2
其实这是docs的预期行为
如何检查2r 是否有误?
【问题讨论】:
标签: javascript parsefloat
我有一个输入,用户输入一个数字、整数或浮点数。我想知道它的数字是否正确,例如,检查输入2r 是否不正确。我的第一种方法是使用parseFloat,但它并没有抱怨:
parseFloat('2r') // returns 2
其实这是docs的预期行为
如何检查2r 是否有误?
【问题讨论】:
标签: javascript parsefloat
这是预期的行为 - parseFloat 和类似的行为将忽略实数之后的任何“垃圾”。
如果您需要从整体上验证这是一个实数,那么可以使用多种策略,其中最简单的方法是尝试数学运算,例如乘以一。
【讨论】:
'2r' + 0 只会导致'2r0'...
这不是parseFloat 的错误,看起来你在追求别的东西。
试试号码;
Number('2r'); // returns Nan
【讨论】:
Number 和 parseFloat 之间的讨论在此继续:stackoverflow.com/questions/12227594/…
如果 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" } });
【讨论】: