angularjs中的Math.ceil返回错误值

问题描述:

当我通过控制台运行Math.ceil(-0.001)时,它返回-0,其中 也对应于官方documentationangularjs中的Math.ceil返回错误值

但是,如果我跑Math.ceil(-0.001)在我angularjs项目,它 回报0,这实际上是不正确的。

我想分开逗号之间的数字,这就是为什么我面临这个问题。

+0

注意,MDN是不是“官” - 它的社区编辑,但是所描述的行为在[官方规格(http://www.ecma-international.org/ecma-262/授权5.1 /#仲丁基15.8.2.6)。 –

+0

我试过把它变成一个角度应用程序:http://jsfiddle.net/IgorMinar/ADukg/,并在控制台中看到正确的-0,正如@JamesThorpe在官方文档中所示 – aorfevre

+1

定义“返回”。你的意思是这个“显示在模板中”?如果是这样,我想这是因为'toString()'在那里被内部使用,它会去掉尾部的'-'符号。尝试一下:'Math.ceil(-0.001).toString()' – mingos

我对Angular的模板代码的内部不太熟悉,但我相信它会在要在模板内显示的变量上使用toString()

toString()定义为返回字符串"0"(如果使用Number类型的值为-0)。你可以试试这个为自己:

console.log(Math.ceil(-0.001).toString());

由于@JamesThorpe在他的评论中提到的,这种行为是explicitly defined in the ECMA2015 standard。引用该文件:

7.1.12.1的ToString施加到编号类型

的抽象操作的ToString一个Number转换为字符串格式如下:

(...)

  1. 如果是或-0,返回字符串"0"
开始=>