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

如何在GitHub Actions的YAML文件中处理浮点数算术运算

在GitHub Actions中处理浮点数算术运算的解决方案

问题原因

Bash原生的算术扩展$(( ))仅支持整数运算,无法直接解析带小数点的浮点数,这就是触发syntax error: invalid arithmetic operator (error token is ".1")报错的核心原因。

解决方法

可以借助Linux系统自带的bc或awk工具完成浮点数运算,以下是两种可直接复用的实现方案:

方案1:使用bc工具

bc是一款支持任意精度算术的工具,适合处理浮点数计算。修改后的GitHub Actions步骤如下:

- name: Verify
  id: test
  env:
    CURRENT_COVERAGE: 35
    PREVIOUS_COVERAGE : 32.1
  run: |
    DIFFERENCE=$(echo "$PREVIOUS_COVERAGE - $CURRENT_COVERAGE" | bc -l)
    echo "::set-output name=difference::$DIFFERENCE"
  • 说明:-l参数会加载数学库,保障浮点数运算的精度与正确性。

方案2:使用awk工具

awk的语法更灵活,支持复杂计算场景,同样可处理浮点数运算:

- name: Verify
  id: test
  env:
    CURRENT_COVERAGE: 35
    PREVIOUS_COVERAGE : 32.1
  run: |
    DIFFERENCE=$(awk "BEGIN {print $PREVIOUS_COVERAGE - $CURRENT_COVERAGE}")
    echo "::set-output name=difference::$DIFFERENCE"
  • 说明:BEGIN块会在处理输入前执行计算逻辑,直接输出运算结果。

额外优化提示

如果需要对结果格式化(比如保留指定小数位数),可通过工具参数实现:

  • 用bc保留2位小数:echo "scale=2; $PREVIOUS_COVERAGE - $CURRENT_COVERAGE" | bc
  • 用awk保留2位小数:awk "BEGIN {printf \"%.2f\n\", $PREVIOUS_COVERAGE - $CURRENT_COVERAGE}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:36:28