簡體   English   中英

如何將printf中的固定數字或數字浮動在bash中

[英]How to printf fixed number or digits in floating in bash

我想要 output 浮點數,前面沒有填充,因為我想在前面加上$符號,例如我讀數字:

1.2345
12.345
123.456

我想要 output:

$1.23450
$12.3450
$123.456

我在 printf 中嘗試了許多不同的變體,但無法確定總位數。 我也沒有找到這個特定問題的答案
printf "$%.7f\n" 1.2345 12.345 123.456
既不與"$%.7f\n "$%07f\n "$%6.4f\n "$%.7g\n
我是否需要為不同大小的數字(即 1、10、100)獲取不同的格式?

如何將printf中的固定數字或數字浮動在bash中

從打印的數字中打印前 7 個字符。

printf "$%.7s\n" "$(printf "%.6f" 1234.2345)"

我是否需要為不同大小的數字(即 1、10、100)獲取不同的格式?

是的,您應該實現自己的格式設置 function 以滿足自定義格式設置要求。 沒有您想要的 printf 格式說明符。

下面是在 Bash 中使用浮點格式的替代方法:

#!/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM