2017-06-13 53 views
0

當我通過控制檯運行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

回答

2

我對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"