【问题标题】:How to convert a string to number如何将字符串转换为数字
【发布时间】:2016-11-18 20:38:18
【问题描述】:

我不知道如何将此字符串 82144251 转换为数字。

代码:

var num = "82144251";

如果我尝试下面的代码,.toFixed() 函数会将我的号码转换回字符串...

问题更新: 我正在使用 Google Apps 脚本编辑器,这一定是问题所在...

num = parseInt(num).toFixed() // if I just do parseInt(num) it returns 8.2144251E7

【问题讨论】:

  • .toFixed() 函数实际上返回的是字符串,而不是数字。
  • 另请注意,8.2144251E782144251 的值完全相同。
  • @PavelValeriu 你为什么打电话给.toFixed()parseInt() 返回一个数字,这就是你所需要的。
  • 我很困惑为什么parseInt 的结果不是你想要的。
  • @PavelValeriu:什么问题? “parseInt(num) 返回 8.2144251E7”? - 不,它没有

标签: google-apps-script


【解决方案1】:

您可以使用一元运算符 '+' 或 parseInt(number,10) 或 Number() 将字符串转换为数字

检查这些 sn-ps

var num1a = "1";
console.log(+num1a);

var num1b = "2";
num1b=+num1b;
console.log(num1b);


var num3 = "3"
console.log(parseInt(num3,10));


var num4 = "4";
console.log(Number(num4));

希望对你有帮助

【讨论】:

  • 虽然+num 将字符串转换为数字是正确的,但我个人不会使用它。看起来+ 总是意外遗留下来的。
  • ...这可能会导致与 += 之间的混淆
  • @Scott Marcus。我根本不相信 +num 令人困惑。用更少的代码改变类型就足够了。
  • 它在这里工作,但请检查我更新的问题。谢谢!
  • @ChrisHaugen 我没有说+num 令人困惑,我说num=+num 很容易与num+=num 混淆。
【解决方案2】:

您似乎正在这里寻找Number() 功能:

var num = "82144251"; // "82144251"
var numAsNumber = Number(num); // prints 82144251
typeof num // string
typeof numAsNumber // number

您可以在此处阅读有关Number() 的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number

希望这会有所帮助!

【讨论】:

  • 使用Number()String()Boolean()构造函数被广泛认为是一种不好的做法。
  • 嘿@ScottMarcus 感谢您的提醒。我们每天都在学习新东西 :) 你能帮我理解为什么会这样吗?
  • @ScottMarcus 为什么Number() 是一个不好的做法? parseIntNumber 有不同的用途。如果我想接受100px 或类似的输入,那么parseInt 将很有用,如果我想确保字符串只包含数字(包括尾随和前导空格、e 符号和十六进制),那么Number() 将给我正确的结果。
  • @Dave Cooper 因为它们有点反模式。它们是您不必与new 一起使用的构造函数,我们还有其他更直观的方法来完成这些工作。
  • @DaveCooper Number() 在幕后创建一个数字对象,而不是仅仅坚持一个类型,这(取决于实现)会产生更多开销并且很容易与 new Number() 混淆。 String()Boolean() 也是如此。
【解决方案3】:

没有问题是愚蠢的。

快速回答:

要将字符串转换为数字,您可以使用unary plus.

var num = "82144251";

num = +num;

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

【讨论】:

  • 那么当字符串包含非数字字符时会发生什么?
  • 它应该评估为 NAN,但是,您的问题并未指定它需要处理非数字。只是 num = parseInt(num).toFixed() 返回一个带有 E 的字符串。
【解决方案4】:

var num = "82144251";
num = parseInt(num).toFixed()
console.log(num, typeof num); // string
num = parseFloat(num);
console.log(num, typeof num); // number

【讨论】:

  • 好的,但是结果是8.2144251E7而不是82144251
  • @PavelValeriu 这不是我运行代码时的结果。你运行 sn-p 了吗?
  • 它在这里工作,但请检查我更新的问题。谢谢!
【解决方案5】:

var intNum = parseInt("82144251", 10); // intNum 是数字

【讨论】:

    【解决方案6】:

    我使用 num-0,因为它更容易内联使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      相关资源
      最近更新 更多