[英]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 並不總是向上......? 我的查詢有什么問題? 謝謝
對於精確精度的數字(例如 DECIMAL),MySQL 將 0.5 向上舍入到下一個最高整數。 對於不精確的數字(例如 FLOAT),MySQL 依靠底層 C 庫的舍入,這通常是“舍入到偶數”。 文檔參考在這里
在下面澄清之后,這應該是您的答案:CASE 會有所幫助。 基本上:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.