angularjs中的Math.ceil返回错误值
问题描述:
当我通过控制台运行Math.ceil(-0.001)
时,它返回-0
,其中 也对应于官方documentation。angularjs中的Math.ceil返回错误值
但是,如果我跑Math.ceil(-0.001)
在我angularjs项目,它 回报0
,这实际上是不正确的。
我想分开逗号之间的数字,这就是为什么我面临这个问题。
答
我对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米转换为字符串格式如下:
(...)
开始=>
- 如果米是或-0,返回字符串
"0"
。
注意,MDN是不是“官” - 它的社区编辑,但是所描述的行为在[官方规格(http://www.ecma-international.org/ecma-262/授权5.1 /#仲丁基15.8.2.6)。 –
我试过把它变成一个角度应用程序:http://jsfiddle.net/IgorMinar/ADukg/,并在控制台中看到正确的-0,正如@JamesThorpe在官方文档中所示 – aorfevre
定义“返回”。你的意思是这个“显示在模板中”?如果是这样,我想这是因为'toString()'在那里被内部使用,它会去掉尾部的'-'符号。尝试一下:'Math.ceil(-0.001).toString()' – mingos