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

【讨论】:

谢谢。那就是,我需要的。 NumberparseFloat 之间的讨论在此继续:***.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 与数字后的字符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

parseInt 与 parseFloat 解析

浅析parseInt与parseFloat的区别

parseFloat()

js 字符串转数字

js parsefloat

JavaScript - 保持尾随零[重复]