我正在尝试将 MySQL SELECT 中的钱四舍五入到最接近的 0.05 美分。
数字如:
140.70 should become 140.70
140.71 should become 140.70
140.72 should become 140.70
140.73 should become 140.75
140.74 should become 140.75
140.75 should become 140.75
140.76 should become 140.75
140.77 should become 140.75
140.78 should become 140.80
140.79 should become 140.80
更详细
0.00 = 0.00
0.01 = 0.00
0.02 = 0.00
0.022 = 0.00 //here the magic should happen 0.022 is closer to 0, result is 0
0.023 = 0.05 //first round 0.023 to 0.025 which should then be rounded up to 0.05
0.03 = 0.05
我用 MySQL CEIL() 和 MySQL FLOOR() 尝试了一些不同的方法,但无法得到正确的结果。
在这里创建了一个SQL Fiddle
有了一张毫无意义的表,除非我们需要一个从中选择:
CREATE TABLE hello ( world varchar(255) );
INSERT INTO hello (world) VALUES ('blubb');
这是选择查询:
SELECT
CEILING ( 0.05 / 0.05 ) * 0.05 AS CEIL_1,
CEILING ( 0.06 / 0.05 ) * 0.05 AS CEIL_2,
CEILING ( 0.07 / 0.05 ) * 0.05 AS CEIL_3,
CEILING ( 0.08 / 0.05 ) * 0.05 AS CEIL_4,
CEILING ( 0.09 / 0.05 ) * 0.05 AS CEIL_5
FROM hello;
这里有人告诉我该怎么做吗?
SELECT ROUND(140.77/5,2) * 5;
+-----------------------+
| ROUND(140.77/5,2) * 5 |
+-----------------------+
| 140.75 |
+-----------------------+