四舍五入 mysql 0.5 并不总是上升
Rounding mysql 0.5 doesn't always go up
https://i.stack.imgur.com/pxEQW.png
CREATE TABLE `zz` (
`jum_r` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `zz` VALUES (71045),(31875),(12045),(172125),(27325),(5465);
SELECT
jum_r,
ROUND(ROUND((jum_r * 1.1), 2), 2) as q_gross,
ROUND(jum_r * 1.1) as gross,
ROUND((jum_r * 10 / 100), 2) as q_ppn,
ROUND(jum_r * 10 / 100) as ppn
FROM zz;
我有图上的数据。为什么舍入 0.5 并不总是上升......?我的查询有什么问题?谢谢
经过下面的澄清,这应该是你的答案:
案例会有所帮助。基本上:
WHEN (ROUND(jum_r * 1.1) < 0.5) THEN FLOOR(ROUND(jum_r * 1.1)), WHEN (ROUND(jum_r * 1.1) >= 0.5 THEN CEILING(ROUND(jum_r * 1.1)). Not pretty but should work
对于精确精度数字(例如 DECIMAL)MySQL 将 0.5 舍入到下一个最高整数。对于不精确的数字(例如 FLOAT),MySQL 依赖于底层 C 库的舍入,通常是 "round-to-even"。 Doc ref here
https://i.stack.imgur.com/pxEQW.png
CREATE TABLE `zz` (
`jum_r` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `zz` VALUES (71045),(31875),(12045),(172125),(27325),(5465);
SELECT
jum_r,
ROUND(ROUND((jum_r * 1.1), 2), 2) as q_gross,
ROUND(jum_r * 1.1) as gross,
ROUND((jum_r * 10 / 100), 2) as q_ppn,
ROUND(jum_r * 10 / 100) as ppn
FROM zz;
我有图上的数据。为什么舍入 0.5 并不总是上升......?我的查询有什么问题?谢谢
经过下面的澄清,这应该是你的答案: 案例会有所帮助。基本上:
WHEN (ROUND(jum_r * 1.1) < 0.5) THEN FLOOR(ROUND(jum_r * 1.1)), WHEN (ROUND(jum_r * 1.1) >= 0.5 THEN CEILING(ROUND(jum_r * 1.1)). Not pretty but should work
对于精确精度数字(例如 DECIMAL)MySQL 将 0.5 舍入到下一个最高整数。对于不精确的数字(例如 FLOAT),MySQL 依赖于底层 C 库的舍入,通常是 "round-to-even"。 Doc ref here