3

这可能是一个新问题,但是......我正在研究 SQSH 中的一个数据库,它具有很大的整数类型值(人口属性)。当我想总结这些时,我得到了一个算术溢出异常。然后我将值转换为十进制,一切正常(没有溢出)。然而,我读到的所有地方都说整数和小数是一回事。那么为什么会这样呢?

提前致谢

4

3 回答 3

4

整数类型是一个 4 字节的数字,最高可达 2,147,483,647。小数可以大大提高。两者都存储为整数,但十进制允许一个值表示小数点后的数字。您还可以使用 BIGINT (9,223,372,036,854,775,807) 代替整数。

于 2011-11-16T02:05:08.317 回答
3

您的decimal数据类型的精度和比例大于int数据类型的最大限制。例如,decimal(18, 0)将具有比int(最高为2147483647)更大的容量。

诚然,int只占用 4 个字节,并且您无法使用decimal(18, 0). 但它会让你达到int.

于 2011-11-16T02:04:28.813 回答
2

来自在线书籍

十进制和数字

decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )] 固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。

int、bigint、smallint 和 tinyint

长度为 4 个字节,存储从 -2,147,483,648 到 2,147,483,647 的数字。

因此,Decimal 可以存储比 Int 更大的值。

于 2011-11-16T02:05:49.327 回答