这可能是一个新问题,但是......我正在研究 SQSH 中的一个数据库,它具有很大的整数类型值(人口属性)。当我想总结这些时,我得到了一个算术溢出异常。然后我将值转换为十进制,一切正常(没有溢出)。然而,我读到的所有地方都说整数和小数是一回事。那么为什么会这样呢?
提前致谢
这可能是一个新问题,但是......我正在研究 SQSH 中的一个数据库,它具有很大的整数类型值(人口属性)。当我想总结这些时,我得到了一个算术溢出异常。然后我将值转换为十进制,一切正常(没有溢出)。然而,我读到的所有地方都说整数和小数是一回事。那么为什么会这样呢?
提前致谢
整数类型是一个 4 字节的数字,最高可达 2,147,483,647。小数可以大大提高。两者都存储为整数,但十进制允许一个值表示小数点后的数字。您还可以使用 BIGINT (9,223,372,036,854,775,807) 代替整数。
您的decimal
数据类型的精度和比例大于int
数据类型的最大限制。例如,decimal(18, 0)
将具有比int
(最高为2147483647
)更大的容量。
诚然,int
只占用 4 个字节,并且您无法使用decimal(18, 0)
. 但它会让你达到int
.
来自在线书籍
decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )] 固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。
长度为 4 个字节,存储从 -2,147,483,648 到 2,147,483,647 的数字。
因此,Decimal 可以存储比 Int 更大的值。