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

ClickHouse中cast转换为Decimal类型时如何实现四舍五入?

ClickHouse Decimal类型转换实现四舍五入的方案

ClickHouse中直接使用cast(数值 as Decimal64(N))做类型转换时,默认对超出精度的小数部分执行截断操作,不会触发四舍五入,因此cast(2.555555 as Decimal64(2))返回结果为2.55属于正常设计行为。

你目前使用的先调用round再做类型转换的方法是可行的全版本兼容方案,除此之外也可以根据你的ClickHouse版本选择更简化的实现方式:

  • 通用兼容方案:和你当前的处理逻辑一致,先通过round()函数完成小数位的四舍五入,再做Decimal类型强转,示例代码如下:
    SELECT cast(round(2.555555, 2) AS Decimal64(2));
    
    执行后返回结果为2.56,符合四舍五入的预期。
  • 高版本简化方案:如果你的ClickHouse版本≥21.9,可以直接使用toDecimal64函数的第三个可选参数指定舍入模式,无需单独调用round函数:
    SELECT toDecimal64(2.555555, 2, 'half_up');
    
    其中half_up就是常规的四舍五入模式,执行后会直接返回精度为2的Decimal64类型值2.56。

内容的提问来源于stack exchange,提问作者Henrik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:54:02