0
當我通過控制檯運行Math.ceil(-0.001)
時,它返回-0
,其中 也對應於官方documentation。angularjs中的Math.ceil返回錯誤值
但是,如果我跑Math.ceil(-0.001)
在我angularjs項目,它 回報0
,這實際上是不正確的。
我想分開逗號之間的數字,這就是爲什麼我面臨這個問題。
當我通過控制檯運行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