使用Math.round后在JavaScript中使用-0?什么是-0?

Tom*_*ica 4 javascript

我只想生成范围内的随机整数<-1,1>,即-1,0或1.我认为这段代码指出:

Math.round(Math.random()*2-1)
Run Code Online (Sandbox Code Playgroud)

但是除了-1,0和1之外,我还得到了一个更多的价值.我不确定应该是什么:

图片描述

现在我不认为这是实现错误,但如果是,我正在使用Firefox 41,同样的事情发生在Google Chrome 39.当我尝试登录-0控制台时,它显示为-0-0转换为String显示为"0".它是什么?我可以将它用于某些东西,比如一些很酷的编程黑客和解决方法吗?如果我不忽略它会导致一些错误吗?

kir*_*nvj 5

两个零

因为JavaScript的数字保持大小和符号分开,所以每个非负数都有一个负数,包括0.这个的基本原理是每当你用数字表示一个数字时,它就会变得很小,以至于它与0无法区分,因为编码不精确足以代表差异.然后有符号的零允许您记录"从哪个方向"接近零; 也就是说,数字在被认为是零之前的标志是什么.

这里开始


如果您有兴趣,请提供更多技术资料

IEEE作为IEEE 754标准的一部分于1985年引入-0和+0的实现.该标准解决在各种浮点实现中发现的许多问题,这些问题使得它们难以可靠且可移植地使用.

标准定义

  • 算术格式:二进制和十进制浮点数据集,由有限数(包括带符号的零和次正规数),无穷大和特殊的"非数字"值(NaN)组成
  • 交换格式:可用于以高效紧凑的形式交换浮点数据的编码(位串)
  • 舍入规则:在算术和转换期间舍入数字时要满足的属性
  • 操作:算术格式的算术和其他操作异常处理:异常条件的指示(例如除零,溢出等)