DataColumn表达式除以零

时间:2012-05-24 23:59:06

标签: expression datacolumn divide-by-zero

我正在使用基本的.net DataColumns和相关的Expression属性。

我有一个应用程序,允许用户定义从数据库表中选择哪些列。他们还可以添加其他列,这些列在数据列上执行表达式,从而生成自定义信息网格。

我遇到的问题是,他们的计算列是“(C2 / C3)* 100”,其中C2和C3是数据列,C3的值是零。旧的“除以零”问题。

简单的答案是将表达式转换为“IIF(C3 = 0,0,(C2 / C3)* 100)”,但是我们不希望用户知道这样做并且在编译时我不知道定义了哪些列。因此,我必须以编程方式确定在分区中使用哪些列才能构造IIF子句。这可能会非常棘手。

如果出现“Divide By Zero”错误,是否有另一种不抛出错误并将结果替换为0的方法?

1 个答案:

答案 0 :(得分:0)

好的,我找到了办法。关键是对列类型使用Double而不是Decimal,例如在上面的示例中,C3应该是Double。这将导致无穷大的结果,可以使用整个表达式来评估。

E.g。 IIF(CONVERT(([C4] / [C3])* 100,'System.String')='NaN'或CONVERT(([C4] / [C3])* 100,'System.String')='无限'或CONVERT(([C4] / [C3])* 100,'System.String')=' - 无限',0,([C4] / [C3])* 100)

小数似乎没有提供Infinity选项。