簡體   English   中英

四舍五入 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 並不總是向上......? 我的查詢有什么問題? 謝謝

對於精確精度的數字(例如 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM