angularjs中的Math.ceil返回错误的值

时间:2017-06-13 13:09:02

标签: javascript angularjs math

当我通过控制台运行var row = datagrid.ItemContainerGenerator.ContainerFromItem(3) as Microsoft.Windows.Controls.DataGridRow; row.Background = Brushes.Blue; 时,它会返回Math.ceil(-0.001) 也对应于官方documentation

但如果我在 angularjs 项目中运行-0,那么 返回Math.ceil(-0.001),这实际上是不正确的。

我想在逗号之间分隔数字,这就是我遇到这个问题的原因。

1 个答案:

答案 0 :(得分: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 m 转换为String格式,如下所示:

     

(...)

     
      
  1. 如果 m + 0 -0 ,请返回字符串 "0" 。< / LI>