Ksh

使用 awk 回顯奇數並列印下一個偶數並防止 1.00001e+06 等結果

  • March 14, 2017

我在 AIX 7.1 上有一個解決方案,我可以在其中回顯一個奇數並列印下一個偶數,例如以下內容:

$ echo "3" | bc -l | awk '{printf("%.0f\n", $1)}' | awk '{$0=int($0/4+.75)*4}1'
4

$ echo "9" | bc -l | awk '{printf("%.0f\n", $1)}' | awk '{$0=int($0/4+.75)*4}1'
12

我面臨的問題是當數量超過一百萬時,它開始給我如下值:

$ echo "1000009" | bc -l | awk '{printf("%.0f\n", $1)}' | awk '{$0=int($0/4+.75)*4}1'
1.00001e+06

我應該得到的是 1000012。它給我的下一個偶數是無關緊要的。只要是偶數。我不確定這是否是我正在測試的 HP-UX B.11.31 中的限制。

有沒有辦法避免得到這樣的結果?

N=1000009
echo "${N:-3} 3+4/4*p" | dc

輸出

1000012

引用自:https://unix.stackexchange.com/questions/351321