You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 11:22:08