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

AWK计算文本数值中位数时,如何输出一位小数格式?

解决AWK中位数输出一位小数的问题

你的问题出在原命令使用print输出,当中位数计算结果为整数形式(如2.0)时,AWK会默认省略末尾的.0,导致输出整数。只需改用printf指定输出格式,强制保留一位小数即可。

修改后的命令:

'{a[i++]=$0;s+=$0}END{printf "%.1f %.1f %.1f %.1f\n", a[0], a[i-1], (a[int(i/2)]+a[int((i-1)/2)])/2, s/i}'

说明:

  • %.1f是格式化指令,要求将每个数值以一位小数的形式输出,哪怕结果是整数(比如2会变成2.0),计算结果为多位小数时会自动四舍五入(符合你原始数据一位小数的特性)。
  • 注意:原命令默认你的输入文件是已按顺序排序的,否则a[0](最小值)、a[i-1](最大值)和中位数的计算结果都会错误。如果文件未排序,需要先对文件排序,或者在AWK中对数组a进行排序后再计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:14:53