0

在我支持的应用程序中,我正在调试一个问题,当报告中显示从数据库返回的值时,偶尔会发生“算术运算导致溢出”异常。我相信所呈现的值来自数据库作为 C# 小数。

但是,在我们的报告中,显示字段具有 Number 类型。我在这里读到,根据转换考虑,当转换为无法处理返回值大小的较小类型(例如浮点数或双精度值)时,可能会出现溢出异常。

可悲的是,Google 在这方面让我失望了——搜索“Crystal Reports Number 数据类型大小”产生的结果模糊不清,没有告诉我任何有关 Crystal Reports 数字数据类型的信息。

所以,我在这里提出一个问题——Crystal Reports Number 与 C# 数字类型有什么关系?或者它们有关系吗?

4

1 回答 1

2

根据以下相关答案,Crystal Reports“数字”类型可能存储为 varchar 或 nvarchar:Crystal Reports 2008 Column 中的最小值和最大值;我不知道你的情况是否属实。我同意搜索 CR 数据类型很困难,我无法找到有关 CR 如何存储数据或有关其存储的数字的精度和比例的信息的适当文档。

小数的精度为 28-29 位有效数字,.MaxValue 常量为 79,228,162,514,264,337,593,543,950,335。我想(希望!)这足以满足您的需求,但问题可能是 CR 具有或多或少的精度,即使某些值不一定超出范围,但它们对于目的地的精度过高处理。

例如,请参阅这个关于 Oracle 到小数问题的问题这个问题中还出现了一个有趣的案例,即从一个大的十进制值中减去 0.5 。

如您所见,数据类型之间的转换有时会令人沮丧。您可能希望在生成报告之前尝试使用较小的数据类型,例如double

于 2012-10-04T21:27:33.347 回答