如何将-0转换为保留符号的字符串?

问题描述 投票:0回答:4
x = -0
>> -0
typeof(x)
>> "number"
x.toString()
>> "0"
console.log(x)
>> -0

如何将 Javascript 的 −0(设置了符号位而不是清除的数字零)转换为两个字符串 (

"-0"
),就像
console.log
在显示它之前所做的一样?

javascript negative-zero
4个回答
4
投票

如果 Node.js(或 npm 可用¹)

util.inspect
会这样做:

> util.inspect(-0)
'-0'

没有的话可以做一个函数:

const numberToString = x =>
    Object.is(x, -0) ?
        '-0' :
        String(x);

如果您没有

x === 0 && 1 / x === -Infinity
,请用
Object.is
替换条件。

¹ 我还没有读过这个包的源代码,以后可能会更新它;安装前先看看!


2
投票

这个怎么样(从here借来的想法):

[-0, 0].forEach(function(x){
    console.log(x, x === 0 && 1/x === -Infinity ? "-0" : "0");
});

0
投票

根据规范,-0是唯一一个

Number(String(x))
不生成
x
的原始值的数字。

可悲的是,所有的站立者

toString
方法告诉
-0
就像
0
一样。哪个转换为字符串
'0'
而不是
'-0'
.

您可能对 Firefox 上的

uneval
功能感兴趣。但由于其仅适用于 Firefox,非标准功能。您应该避免在网站上使用它。 (另外,请永远不要像深度克隆那样做
eval(uneval(x))

也许你必须用自己的代码来做到这一点:

function numberToString(x) {
  if (1 / x === -Infinity && x === 0) return '-0';
  return '' + x;
}

-1
投票

所以我们不能简单地得到 -0 的符号,它是唯一的,如果符号是 -0,我们可以将“-”附加到零。任何想法

© www.soinside.com 2019 - 2024. All rights reserved.