sign-bit

Correctly returns the sign bit of a IEEE-754 number as 1 or -1, including +/-0

$ cnpm install sign-bit

SYNC missed versions from
official npm registry.

Correctly returns the sign bit of a IEEE-754 number as 1 or -1, including +/-0.

In IEEE-754, zeros are signed. In Javascript, numbers follow the IEEE-754 spec. `Math.sign`

tries to behave like the sign function in math, but returns IEEE-754 signed zeros: tc39.github.io/ecma262/#sec-math.sign. Signed zeros are tricky do detect and work with in JS. Arguably, signed zeros and the mathematical definition of the `sign`

don't exactly line up and there is room for confusion and ambiguity as to what the Math.sign is supposed to do in this context.

`sign-bit`

unambiguously returns the sign bit as `1`

or `-1`

of all Numbers in JS, including signed zeros.

```
npm install sign-bit
```

```
var sign = require('sign-bit')
sign(3) // 1
sign(-3) // -1
sign(0) // 1
sign(-0) // -1
Math.sign(3) // 1
Math.sign(-3) // -1
Math.sign(0) // 0
Math.sign(-0) // -0
// ¯\_(ツ)_/¯
```

See this thread: https://twitter.com/ydkjs/status/682225267276812288

In retrospect, I think ydkjs is wrong on the confusion here.

Contributions welcome! Please read the contributing guidelines first.

- Inspired by @YDKJS's tweet
- and the accompanying fixyFill
- mathworld.wolfram.com/Sign
- tc39.github.io/ecma262/#sec-math.sign
- en.wikipedia.org/wiki/Signed_zero
- en.wikipedia.org/wiki/One-sided_limit
- en.wikipedia.org/wiki/IEEE_754-1985#Zero

- 1.0.4 ... latest (a year ago)

Copyright 2014 - 2016 © taobao.org |