在MySQL中,将1转换为十进制返回0.9999而不是1.0000

在MySQL中将1转换为十进制时,我期待1.0000,但输出为0.9999.

到底发生了什么?

SELECT CAST(1 AS DECIMAL(4,4))

最佳答案
超出范围

例如,DECIMAL(5,2)存储五位数和两位小数的任何值,其范围为-999.99到999.99.

SELECT CAST(1 AS DECIMAL(5,4)) -> 1.0000
SELECT CAST(1 AS DECIMAL(4,3)) -> 1.000
SELECT CAST(0.0001 AS DECIMAL(4,4)) -> 0.0001
SELECT CAST(0.00001 AS DECIMAL(4,4)) -> 0.0000
SELECT CAST(12345 AS DECIMAL(5,4)) -> 9.9999

更多信息:

https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html
https://dev.mysql.com/doc/refman/5.7/en/fixed-point-types.html

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。