【发布时间】:2012-06-28 08:11:17
【问题描述】:
我需要用 bash 对数字进行一些“漂亮”的格式化。我有一串科学格式的逗号分隔浮点数(即 3.14159 或 1.0601e-12),我需要创建一个逗号分隔的列表,其中所有数字都有尽可能多的字符。填充时使用空格还是零并不是很重要(即“3.14”和“3.140000”都有效)。我尝试将 printf 与“%.12f”一起使用,但这当然行不通。我没有想法(除了在角色层面上工作,但这似乎过于复杂)
非常感谢您的帮助。
【问题讨论】:
-
“当然行不通”是什么意思?
-
因为 printf "%.12f" 在点之后打印 12 个字符,这意味着它例如将数字 12e-24 变为 0...我需要能够设置有效数字而不是小数位。
-
您不能在同一个 printf 语句中同时使用字段宽度和精度修饰符——至少在我的系统上不行。如果两者都需要,则需要编写代码。
-
@CodeGnome:你不能在你的系统上做
printf '%30.16f' 1.0601e-12? -
@DennisWilliamson 试试
printf "%'30.24f\n" 3.140000 3000 1.0601e-12 3000000000。这可能是可能的,但选项的组合并不总是符合您的预期 - 请注意第 4 行的宽度。
标签: bash