在javascript中将字符串转换为整数或浮点数

时间:2015-11-05 12:41:31

标签: javascript parseint parsefloat

如果我不知道变量是整数数字还是十进制数字,是否有一种简单的方法将字符串解析为整数或浮点数?

a = '2'; // => parse to integer
b = '2.1'; // => parse to float
c = '2.0'; // => parse to float
d = 'text'; // => don't parse
编辑:似乎我的问题缺乏必要的背景:我想做一些计算而不会丢失原始格式(原始格式因此意味着整数与浮动。我不关心原始的小数位数) :

示例:

String containing the formatted number ('2') => parse to number (2.0) => do some calculations (2.0 + 1 = 3.0) => restore "original format" ('3' and not '3.0')

如果输入是2.0,那么想要的结果将是' 3.0' (不是' 3')。

4 个答案:

答案 0 :(得分:10)

将数字数据与1相乘的字符串。您将获得数字数据值。

var int_value = "string" * 1;

在你的情况下

a = '2' * 1; // => parse to integer
b = '2.1' * 1; // => parse to float
c = '2.0' * 1; // => parse to float
d = 'text' * 1; // => don't parse    //NaN value

对于最后一个,您将获得NaN值。手动处理NaN值

答案 1 :(得分:4)

将其包装在Number()

Number('123') === 123

Number('-123.456') === -123.456

答案 2 :(得分:0)

这就是我最终解决它的方式。我找不到任何其他解决方案,而不是将变量类型添加到变量...

var obj = {
	a: '2',
	b: '2.1',
	c: '2.0',
	d: 'text'
};
// Explicitly remember the variable type
for (key in obj) {
  var value = obj[key], type;
  if ( isNaN(value) || value === "" ) {
    type = "string";
  }
  else {
    if (value.indexOf(".") === -1) {
      type = "integer";
    }
    else {
      type = "float";
    }
    value = +value; // Convert string to number
  }
  obj[key] = {
    value: value,
    type: type
  };
}
document.write("<pre>" + JSON.stringify(obj, 0, 4) + "</pre>");

答案 3 :(得分:0)

您可以使用:

function parse(x){
  return x==x*1?x*1:x
 }

function parse(x){
  return x==x*1?x*1:x
 }
 
 console.log(parse(1),typeof parse(1))
 console.log(parse("1"),typeof parse("1"))
 console.log(parse("1.1"),typeof parse("1.1"))
 console.log(parse("1A"),typeof parse("1A"))