我正在将以下字符串转换为数字,但它正在删除" +"字符。我的意图是输出以下内容:
我目前正在回归:
"change": "+0.01",
我想要的输出:
"change": +0.01,
使用" Number()"删除" +"
如何解决此问题?
答案 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');
但有两个例外:
+0
,与-0
不同(参见Object.is(+0, -0)
)Object.is(1e+2, 100)
)在您的情况下,Number('+0.01')
或parseFloat('+0.01')
将返回0.01
。这是预期的(合理的)行为。