gpt4 book ai didi

javascript - Javascript 中 float 和整数的区别?

转载 作者:可可西里 更新时间:2023-11-01 01:40:26 28 4
gpt4 key购买 nike

我正在查看 Google Closure Library 中的一些代码,我发现了这一行:

var isNegative = number < 0.0 || number == 0.0 && 1 / number < 0.0;

我认为这种最初看起来很奇怪的符号检查的原因是将 -0 识别为负数,但是是否有任何理由改用 0.0 0?

最佳答案

(自 2011 年发布此答案以来发生了很多变化 - 请参阅下面的更新)

2019 年 6 月更新

BigInt自 2018 年 5 月以来已在 V8(基于 Node.js 和 Chromium 的浏览器)中推出。它应该登陆 Firefox 68 - 请参阅 SpiderMonkey ticket .也在 WebKit 中实现.

BigDecimal 还没有被任何引擎实现。看看替代品library .

2015 年更新

我写这个答案已经 4 年多了,现在情况要复杂得多。

现在我们有:

很快我们就会有:

这意味着 JavaScript 中可用的数字类型的数量将从原来的一种增长:

至少在 WebAssembly 中包含以下内容:

  • 8 位整数(有符号和无符号)
  • 16 位整数(有符号和无符号)
  • 32 位整数(有符号和无符号)
  • 64 位整数(有符号和无符号)
  • 32 位 float
  • 64 位 float

(从技术上讲,所有整数类型的内部表示在最低级别都是无符号的,但不同的运算符可以将它们视为有符号或无符号,例如 int32.sdivint32.udiv等)

这些在 typed arrays 中可用:

  • 8 位二进制补码有符号整数
  • 8 位无符号整数
  • 8 位无符号整数(固定)
  • 16 位二进制补码有符号整数
  • 16 位无符号整数
  • 32 位二进制补码有符号整数
  • 32 位无符号整数
  • 32 位 IEEE float
  • 64 位 IEEE float

asm.js定义了以下数值类型:

  • 内部
  • 签署
  • 未签名
  • 内部
  • 修正数
  • 加倍?
  • 漂浮
  • 漂浮?
  • 漂浮

2011 年原始答案

JavaScript 中只有一种数字类型——IEEE 754 double precision floating-point number。 .

请参阅这些问题以了解该事实的一些后果:

关于javascript - Javascript 中 float 和整数的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5179836/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com