在MySQL中将1转换为十进制时,我期待1.0000,但输出是0.9999.
到底发生了什么?
SELECT CAST(1 AS DECIMAL(4,4))
Run Code Online (Sandbox Code Playgroud)
超出范围
例如,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
Run Code Online (Sandbox Code Playgroud)
更多信息:
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