今天在写代码的时候遇到了一个取整问题在此记录一下

ROUND

MySQL ROUND() 函数用于将数字四舍五入到指定的小数位数

1
ROUND(number, decimals)

其中,number 是要舍入的数字,decimals 是要保留的小数位数。例如,将数字 3.14159265358979323846 舍入到小数点后两位,可以使用以下查询:

1
SELECT ROUND(3.14159265358979323846, 2); // 3.14

FLOOR

MySQL FLOOR() 函数用于将数字向下取整到最接近的整数

1
FLOOR(number)

其中,number 是要向下取整的数字。例如,将数字 3.99 向下取整到最接近的整数,可以使用以下查询:

1
SELECT FLOOR(3.99); // 3

CEILING

MySQL CEILING() 函数用于将数字向上取整到最接近的整数

1
CEILING(number)

其中,number 是要向上取整的数字。例如,将数字 3.01 向上取整到最接近的整数,可以使用以下查询:

1
SELECT CEILING(3.01); // 4

TRUNCATE

MySQL TRUNCATE() 函数用于将数字截断到指定的小数位数,不进行四舍五入

1
TRUNCATE(number, decimals)

其中,number 是要截断的数字,decimals 指定要保留的小数位数。 例如,将数字 3.14159 截断到两位小数,可以使用以下查询:

1
SELECT TRUNCATE(3.14159, 2); // 3.14

ROUND() 函数不同, TRUNCATE() 函数不会进行四舍五入,而只是简单地截断数字

FORMAT

MySQL FORMAT() 函数用于将数字格式化为指定的格式

1
FORMAT(number, decimal_places)

其中,number 是要格式化的数字, decimal_places 指定要保留的小数位数。 例如,将数字 123456.789 格式化成带千分位的字符串,并保留两位小数,可以使用以下查询:

1
SELECT FORMAT(123456.789, 2); // 123,456.79

注意:FORMAT() 函数返回一个字符串,如果要执行其他计算,需要使用 CAST() 函数将其转换为数字。这个字符串我们可以有很多操作空间要重点关注,比如可以对查询出来的字符串数值进行匹配替换,我今天遇到的也是这个问题

FORMAT() 函数也可以使用第三个参数来指定千分位分隔符和小数点符号(了解即可)。举个例子:

1
SELECT FORMAT(123456.789, 2, 'de_DE'); // 123.456,79