肯德基条件格式化导致负零的结果

7

我们正在使用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中的错误?
编辑:看起来这也可能会导致使用三向条件格式化时出现“正零”的问题。
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个回答

1
也许这是一种预期行为。然而,在应用格式之前进行四舍五入可以避免这种情况发生。
kendo.toString(Math.round(-.01), "\\$0;-\\$0") //$0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接