Kendo条件格式导致负零

Cha*_*ion 7 javascript telerik number-formatting kendo-ui

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

kendo.toString(value, '\\$0;-\\$0') // e. g. -$100 or $100
Run Code Online (Sandbox Code Playgroud)

问题是剑道选择应用条形格式的哪一侧使用BEFORE舍入.因此,我们最终可以显示负零:

kendo.toString(-.01, '\\$0;-\\$0') // -$0
Run Code Online (Sandbox Code Playgroud)

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

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

Console.WriteLine((-.01).ToString("$0;-$0")); // $0
Run Code Online (Sandbox Code Playgroud)

作为参考,我们构建这样的掩码的原因是因为我们有用户定义的"前"和"后"符号,它们应该在负/正号之间(或者如果我们使用parens来表示否定)和数字本身之间的符号. .因此,我们想要 - $ 100或($ 100)而不是$ -100或$(100),其中"$"是用户指定的字符串.

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

编辑:看起来这也会导致使用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)
Run Code Online (Sandbox Code Playgroud)

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

Console.WriteLine(0.001.ToString("+\\$0;-\\$0;\\$0")); // $0
Run Code Online (Sandbox Code Playgroud)

小智 1

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

kendo.toString(Math.round(-.01), "\\$0;-\\$0") //$0
Run Code Online (Sandbox Code Playgroud)