如何在 bash 中打印固定数字或浮动数字
How to printf fixed number or digits in floating in bash
我想输出具有精确位数的浮点数而不在前面填充,因为我想在前面加上 $
符号
例如我读了数字:
1.2345
12.345
123.456
我想要输出:
.23450
.3450
3.456
我在 printf 中尝试了许多不同的变体,但无法确定总位数。我也没有找到这个特定问题的答案
printf "$%.7f\n" 1.2345 12.345 123.456
"$%.7f\n
"$%07f\n
"$%6.4f\n
"$%.7g\n
我是否需要为不同大小的数字(即 1、10、100)获取不同的格式?
How to printf fixed number or digits in floating in bash
打印打印数字的前 7 个字符。
printf "$%.7s\n" "$(printf "%.6f" 1234.2345)"
Do I need to get different formatting for for different magnitude of numbers ie 1, 10, 100?
是的,您应该为自定义格式要求实现自己的格式设置功能。没有您想要的 printf 格式说明符。
这是在 Bash 中使用 floating-point 格式的替代方法:
#!/usr/bin/env bash
float_numbers=(1.2345 12.345 123.456)
# Get the longest number's length
for float in "${float_numbers[@]}"; do
max_length=$((${#float} > max_length ? ${#float} : max_length))
done
for float in "${float_numbers[@]}"; do
# Generate needed padding
printf -v padding '%-*s' $((max_length - ${#float})) ''
# Print $float followed by its 0 padding
printf '$%s%s\n' "$float" "${padding// /0}"
done
我想输出具有精确位数的浮点数而不在前面填充,因为我想在前面加上 $
符号
例如我读了数字:
1.2345
12.345
123.456
我想要输出:
.23450
.3450
3.456
我在 printf 中尝试了许多不同的变体,但无法确定总位数。我也没有找到这个特定问题的答案
printf "$%.7f\n" 1.2345 12.345 123.456
"$%.7f\n
"$%07f\n
"$%6.4f\n
"$%.7g\n
我是否需要为不同大小的数字(即 1、10、100)获取不同的格式?
How to printf fixed number or digits in floating in bash
打印打印数字的前 7 个字符。
printf "$%.7s\n" "$(printf "%.6f" 1234.2345)"
Do I need to get different formatting for for different magnitude of numbers ie 1, 10, 100?
是的,您应该为自定义格式要求实现自己的格式设置功能。没有您想要的 printf 格式说明符。
这是在 Bash 中使用 floating-point 格式的替代方法:
#!/usr/bin/env bash
float_numbers=(1.2345 12.345 123.456)
# Get the longest number's length
for float in "${float_numbers[@]}"; do
max_length=$((${#float} > max_length ? ${#float} : max_length))
done
for float in "${float_numbers[@]}"; do
# Generate needed padding
printf -v padding '%-*s' $((max_length - ${#float})) ''
# Print $float followed by its 0 padding
printf '$%s%s\n' "$float" "${padding// /0}"
done