我正在使用apache的BigFraction类,它基本上使用BigInteger作为分子和分母。现在我需要将这些值存储在数据库中,由于数据的性质,我需要确保它们尽可能准确。
我将sql server设置为包含分子和分母的列,这些列设置为numeric(35,0)。
现在我遇到的问题是,当我的计算超过这个值时,我最终会遇到数据截断的异常。
有关在sql server中使用的类型的任何建议,并确保相当大的精度?
答案 0 :(得分:0)
问题是数字是Sql Server MSDN on datatypes中最大的数字类型,并且您已经发现需要在前面小数点之后定义多少个数字。
因此,您必须将BigNumbers存储为字符串 - varchar(4000)以保留所有有效数字并注意它需要超过3999然后您必须拆分多个列,您也可以直接存储为二进制在varbinary
列中,您将无法轻松查看数据库中存储的内容。如果您的数字在分子和分母中总是少于35个有效数字,则可以保存在两个数字字段中。