1

我正在使用 apache 的 BigFraction 类,它基本上使用 BigInteger 作为分子和分母。现在我需要将这些值存储在数据库中,并且由于数据的性质,我需要确保它们尽可能准确。

我将 sql 服务器设置为具有分子和分母的列,它们设置为类型 numeric(35, 0)。

现在我遇到的问题是,一旦我的计算超过了这个值,我最终会遇到数据截断的例外情况。

关于在 sql server 中使用的类型并确保相当大的精度有什么建议吗?

4

1 回答 1

0

问题是 numeric 是 Sql Server MSDN 中关于数据类型的最大数字类型,正如您发现的那样,您需要预先定义小数点后有多少个数字。

因此,您必须将 BigNumbers 存储为字符串 - varchar(4000) 以保留所有有效数字,并注意它需要超过 3999,然后您将不得不拆分几列,您也可以直接将二进制存储在varbinary列中,但是您将无法轻松查看数据库中存储的内容。如果您的数字在分子和分母中的有效数字总是少于 35 个,您可以保存在两个数字字段中。

于 2013-01-17T12:00:30.760 回答