剑道条件格式导致负零

Posted

技术标签:

【中文标题】剑道条件格式导致负零【英文标题】:Kendo conditional formatting results in negative zero 【发布时间】:2017-02-20 00:25:21 【问题描述】:

我们正在使用 kendo 对条件格式的支持来构建自定义掩码。例如:

kendo.toString(value, '\\$0;-\\$0') // e. g. -$100 or $100

问题在于 kendo 在应用舍入之前选择要使用条件格式的哪一侧。因此,我们最终可以显示负零:

kendo.toString(-.01, '\\$0;-\\$0') // -$0

请注意,这与此问题类似:http://www.telerik.com/forums/issue-rounding-to-zero---getting-negative-zero,但是该问题是针对内置 n2 格式的,而我们的问题是针对条件格式的。

请注意,在 C#/.NET 中,条件格式的行为符合我们的要求:

Console.WriteLine((-.01).ToString("$0;-$0")); // $0

作为参考,我们构建这样的掩码的原因是因为我们有用户定义的“前”和“后”符号,它们应该位于负号/正号之间(如果我们使用括号表示否定,则为括号)和号码本身。因此,我们需要 -$100 或 ($100) 而不是 $-100 或 $(100),其中“$”是用户指定的字符串。

是否有可能让 Kendo 在这方面表现得像 .NET?这是预期的行为还是 Kendo 中的错误?

编辑:看起来这也可能导致使用 3 路条件格式的“正零”问题:

var format = "+\\$0;-\\$0;\\$0";
kendo.toString(1, format) // "+$1"
kendo.toString(0, format) // "$0"
kendo.toString(-1, format) // "-$1"
kendo.toString(.001, format) // "+$0" (positive zero)

这在 .NET 中也可以正常工作:

Console.WriteLine(0.001.ToString("+\\$0;-\\$0;\\$0")); // $0

【问题讨论】:

【参考方案1】:

也许这是一种预期的行为。但是,您可以在应用格式之前通过舍入来避免这种情况。

kendo.toString(Math.round(-.01), "\\$0;-\\$0") //$0

【讨论】:

以上是关于剑道条件格式导致负零的主要内容,如果未能解决你的问题,请参考以下文章

剑道网格列模板中的条件

如何有条件地隐藏或显示剑道网格​​中的列

剑道编辑器模板可见条件

mysql按照时间条件查询 忽略是时分秒查询

从另一个视图重新绑定剑道网格到以前的搜索条件的正确方法是啥(后退按钮不起作用)

如何根据剑道网格中的特定列条件更改行的颜色以获取角度