当将数据从一种数字数据类型转换为另一种数字数据类型时,偶尔会发现舍入错误。
下表指示哪些数字数据类型转换是可接受的,以及当在某些数字数据类型之间转换时可能遇到哪些种类的错误。 在表中,使用了以下代码:
目标类型 | SMALL INT | INTEGER | INT8 | SMALL FLOAT | FLOAT | DECIMAL |
---|---|---|---|---|---|---|
SMALLINT | OK | OK | OK | OK | OK | OK |
INTEGER | E | OK | OK | E | OK | P |
INT8 | E | E | OK | D | E | P |
SMALLFLOAT | E | E | E | OK | OK | P |
FLOAT | E | E | E | D | OK | P |
DECIMAL | E | E | E | D | D | P |
例如,如果将 FLOAT 值转换为 DECIMAL(4,2),那么数据库服务器在将浮点数存储为 DECIMAL 之前先对它进行舍入。
此转换可能会导致错误,这取决于指定给 DECIMAL 列的精度。