当我通过控制台运行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)
,这实际上是不正确的。
我想在逗号之间分隔数字,这就是我遇到这个问题的原因。
答案 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格式,如下所示:
(...)
- 如果 m + 0 或 -0 ,请返回字符串
"0"
。< / LI> 醇>