如何在转换为数字值时防止字符串值被舍入?

时间:2016-11-18 19:17:39

标签: javascript jquery string numbers

我有一个接受数值的输入字段。我想找到一个将该字符串值转换为数字值的方法。

ParseInt()是最先找到的,然后是 toFixed()

这些有什么共同之处?它将值四舍五入为整数值(就像ParseInt建议的那样 - 我知道!)。

如何在保留任何小数值的同时将字符串表示转换为数字值?

例如:

"54.3" --> 54.3

4 个答案:

答案 0 :(得分:12)

您可以使用:

//pass String as argument
var floatVal = parseFloat("54.3");
console.log(floatVal);

答案 1 :(得分:7)

整数是整数。

Float是一个带小数值的数字。

了解这一点,您将需要使用parseFloat(),这将考虑这段时间;而不是parseInt(),它将四舍五入到最接近的整数。

有关更多详细信息,请参阅:these docs

所以答案是:

parseFloat("string");

你也可以这样做,这被称为一元加:

let a = "54.3"

a = +a;

做+ a实际上与做* 1相同;如果需要,它会将a中的值转换为数字,但之后它不会更改该值。

答案 2 :(得分:4)

您甚至可以将Number用作numeric strings to a number的函数:

Number("54.3") // 54.3

请注意以下事项:

  • parseFloat应该从字符串中解析一个数值,如果字符串的开头(如果不是全部的话)是数字,则成功。

  • Number构造函数或函数检查整个字符串是否为数字。

  • +"54.3"与幕后的Number("54.3")完全相同。

答案 3 :(得分:1)

您可以将输入字段转换为数字,也可以指定要保留的十进制值数。

因此,假设您使用两个十进制值进行计算,但用户键入" 3.14151617"的输入。您可以使用此方法转换输入并删除额外的十进制值。

var input = "3.14151617" var num = +(parseFloat(input).toFixed(2))