将字符串转换为数字,但保持' +'使用JavaScript

时间:2017-05-06 14:41:47

标签: javascript string

我正在将以下字符串转换为数字,但它正在删除" +"字符。我的意图是输出以下内容:

我目前正在回归:

"change": "+0.01",

我想要的输出:

"change": +0.01,

使用" Number()"删除" +"

如何解决此问题?

3 个答案:

答案 0 :(得分:2)

数字是数字是一个数字。不是字符串。不是数字的表示。但是一个数字。没有" +"字符或" - "存储的字符。没有逗号,句号或其他字符。这是。你不能拥有"加上符号两个苹果&#34 ;;你只有两个苹果。

数字0.01为正数。这个数字来自哪里,或者用于产生数字的原始字符串是什么无关紧要。

如果您希望将一个正数与前导+串联起来,那么这就是您稍后在以后转换"以及如何处理Number对象的问题。它回到一个字符串。 You can achieve that simply with an if statement

然而,对我来说,你期望的结果"看起来像一个对象声明,其中前导+的存在与否将再次无关,因为您正在存储数字。如果你需要将它呈现给人类,你可以在数据的接收端格式化它。

答案 1 :(得分:0)

你不能。 +0.01等于0.01。如果你想保留+,那么你需要它是字符串。

如果您想从该字符串中获取数字并检查其是否有+符号,请使用RegEx或split该字符串。

答案 2 :(得分:0)

数字的+前缀在JavaScript中是一个糟糕的主意,这就是为什么不允许这样做。

在这种语言中,+已用于许多内容,例如:

  • 字符串连接(例如'foo' + 'bar'
  • 添加的数字(例如1 + 2
  • 变量增量(例如i++
  • 使用一元运算符进行显式类型转换(例如+'0.07'
  • 当操作数不是同一类型时,隐式类型转换(强制)(例如4 + '6'

这是JavaScript中容易出错的部分,因为您可能拥有以下代码:

var i = 2;

console.log(+'+1' + '3' + ++i + +'7');

但有两个例外:

  1. +0,与-0不同(参见Object.is(+0, -0)
  2. 指数(见Object.is(1e+2, 100)
  3. 在您的情况下,Number('+0.01')parseFloat('+0.01')将返回0.01。这是预期的(合理的)行为。