Hive SQL中如何将列值保留两位小数且不四舍五入?
如何实现截断式保留两位小数(而非四舍五入)
你需要的是截断保留两位小数(直接舍弃第三位及以后的小数),而非round()函数的四舍五入逻辑,以下是几种不同场景下的实现方法:
方法1:数学运算实现(通用多数编程语言/数据库)
通过放大数值、取整、再缩小的方式实现截断:
-- SQL 示例 SELECT FLOOR(Column_value * 100) / 100 AS truncated_value FROM your_table;
# Python 示例 def truncate_decimal(num): return int(num * 100) / 100 # 测试:truncate_decimal(6.567878) → 6.56
注意:如果处理负数,
FLOOR会返回更小的整数(如FLOOR(-6.5678*100)/100 = -6.57),此时可改用CEIL函数:CEIL(-6.5678*100)/100 = -6.56
方法2:字符串截断法
将数值转为字符串后,截取小数点前部分+前两位小数:
-- SQL 示例(以MySQL为例) SELECT CASE WHEN LOCATE('.', Column_value) > 0 THEN CONCAT( SUBSTRING_INDEX(Column_value, '.', 1), '.', LEFT(SUBSTRING_INDEX(Column_value, '.', -1), 2) ) ELSE Column_value END AS truncated_value FROM your_table;
方法3:工具内置函数(特定场景)
部分工具或语言提供了直接的截断函数:
- Excel/Google Sheets:使用
TRUNC(Column_value, 2),直接返回截断后的结果 - PHP:使用
floor($num * 100) / 100或number_format($num, 2, '.', '', PHP_ROUND_HALF_DOWN)
内容的提问来源于stack exchange,提问作者Yes_par_row
相关产品推荐
相关产品推荐

