MySQL中如何将FLOAT类型值四舍五入为整数类型?
在MySQL中将FLOAT值四舍五入为INTEGER类型的方法
以下是几种可靠且高效的实现方式:
显式类型转换(推荐)
先用ROUND()完成四舍五入计算,再通过CAST()将浮点结果转换为整数类型,这是最稳妥的方案:-- 转换为有符号整数 SELECT CAST(ROUND(your_float_column) AS SIGNED); -- 转换为无符号整数(仅适用于非负数场景) SELECT CAST(ROUND(your_float_column) AS UNSIGNED);针对你担心的浮点舍入误差问题——比如
ROUND(3.2)返回近似2.999999999999999的情况,CAST()会自动识别这种接近整数的浮点数,正确转换为3,不会出现FLOOR()导致的错误结果。隐式类型转换
若追求简洁,可通过数学运算触发MySQL的隐式类型转换,直接得到整数结果:SELECT ROUND(your_float_column) + 0;这种方式效率很高,但显式
CAST()的可读性更强,生产环境中更推荐显式写法。正数专属简化方案
如果你处理的FLOAT值均为非负数,还可以用FLOOR(x + 0.5)实现四舍五入并直接得到整数:SELECT FLOOR(your_float_column + 0.5);注意:该方法不适用于负数,例如
ROUND(-3.5)返回-4,但FLOOR(-3.5 + 0.5)会得到-3,结果不符。
内容的提问来源于stack exchange,提问作者Daniel Howard
相关产品推荐
相关产品推荐

