SQL 货币四舍五入至最接近的 0.05 美分

问题描述 投票:0回答:1

我正在尝试将 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;

这里有人告诉我该怎么做吗?

mysql math rounding
1个回答
18
投票
SELECT ROUND(140.77/5,2) * 5;
+-----------------------+
| ROUND(140.77/5,2) * 5 |
+-----------------------+
|                140.75 |
+-----------------------+
© www.soinside.com 2019 - 2024. All rights reserved.