2016-04-18 1 views
0

В Chrome JavaScript консоли:Chrome Возвращение '-0'

Math.ceil(-0.5) возвращает -0

Math.ceil(-0.9) возвращает -0

Math.ceil(-0.1) возвращает -0

Почему распечатывания отрицательный знак в фронт 0? я ожидал бы Chrome, вернулись только 0

Испытано с Chrome (OSX) Версия 49.0.2623.110 (64-разрядная версия)

+0

Возможный дубликат [Math.ceil не работает с отрицательными поплавками] (http://stackoverflow.com/questions/26335076/math-ceil-not-working-with-negative-floats) –

+0

Это не дубликат этот вопрос. Этот вопрос говорит о том, почему отрицательные числа всегда округляются. Именно поэтому 0 имеет минус перед ним. –

ответ

3

Поведение Math.ceil определяется в спецификации на § 20.2.2.10, с явным пункт для значений между -1 и 0:

Если х меньше 0, но больше чем -1, результат равен -0.

Chrome ведет себя таким образом, поскольку спецификации явно требует и -0 и +0 немного отличаются.

JavaScript (§ 6.1.6) и числа с плавающей запятой в целом (IEEE 754), провести различие между положительным и отрицательным нулями.

Разница заключается не в том, что вы часто сталкиваетесь, но может быть значительным (особенно при отправке данных на оборудование или во время выполнения), поэтому это не то, что JS может просто игнорировать.

+0

Спасибо @ssube за ответ и ссылки на другие источники, где я могу получить более подробный ответ – bernays