如何使用parseInt而不是parseFloat转换代表小数的字符串?

时间:2018-06-28 01:22:09

标签: javascript type-conversion parseint

给出一个代表数字的字符串,使用parseInt将字符串转换为数字。我编写了一个工作函数,但没有考虑十进制数字。有没有一种方法可以使用parseInt转换小数?据我所知,这只是尝试计算小数。问题是NaN被返回。我想不出实现从结果中过滤NaN的解决方案。最终目标是比较两个字符串。我的解决方案必须使用parseInt。

function convertStr(str1, str2) {
let num1 = str1.split('')
let num2 = str2.split('');
num1 = num1.map(str => parseInt(str));
num2 = num2.map(str => parseInt(str));
console.log(num1);
console.log(num2);
}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为这是您追求的目标的一个好步骤:

问题是:遇到十进制值时,您希望输出什么?

// Soluce to replace NaN by '.'
function convertStrReplace(str1) {
  let num1 = str1.split('')
  
  num1 = num1.map(str => parseInt(str)).map(x => isNaN(x) ? '.' : x);
  
  console.log(num1);
}

// Soluce to ignore NaN
function convertStrIgnore(str1) {
  let num1 = str1.split('')
  
  num1 = num1.map(str => parseInt(str)).filter(x => !isNaN(x));
  
  console.log(num1);
}


convertStrReplace('17,52');
convertStrIgnore('17,52');


语法替代

function convertStrFilter(str1) {
  const num1 = [
    ...str1,
  ].map(str => parseInt(str)).filter(x => !isNaN(x));

  console.log(num1);
}

convertStrFilter('17,52');


有关整数和字符串差异的说明

// String and integer differences

// Put a number into a string
const str = '9000';

console.log(typeof str, str);

// Put a number into a number
const number = 9000;

console.log(typeof number, number);

// Compare both (compare value and type)
console.log('equality ===', str === number);

// Compare both (compare value)
console.log('equality ==', str == number);

const numberFromString = parseInt(str);

console.log(typeof numberFromString, numberFromString);

// Compare both (compare value and type)
console.log('equality ===', number === numberFromString);