シェルスクリプトでのパーセンテージを計算する方法= echo "scale=2; $DP*100/$SDC" | bc
それが出力として0.16を返しますが、私は0.16私は私のシェルコードで パーセントを、スクリプトの次の行を使用
0
A
答えて
0
POSIX準拠のソリューションはbc
を使用して、それを必要とする:
#!/bin/sh
Percent="$(echo "
scale=2;
a = $DP * 100/$SDC;
if (a > -1 && a < 0) { print "'"-0"'"; a*=-1; }
else if (a < 1 && a > 0) print 0;
a" | bc)"
回答が-1と1(排他的)の間で、ゼロではない場合には、これらの特別なチェックのすべてが醜いです。
は、のではなくawk
を使用して、このPOSIX準拠のソリューションを使用してみましょう:
#!/bin/sh
Percent="$(echo "$DP" "$SDC" |awk '{printf "%.2f", $1 * 100/$2}')"
Zシェルはネイティブでこれを行うことができます:
#!/bin/zsh
Percent="$(printf %.2f $((DP * 100./SDC)))"
を(ドットは、浮動小数点演算を使用するのzshを指示する必要があります。 )
文字列操作を使用するネイティブPosixソリューション(は整数入力を仮定します ):
#!/bin/sh
# # e.g. round down e.g. round up
# # DP=1 SDC=3 DP=2 SDC=3
Percent=$((DP * 100000/SDC + 5)) # Percent=33338 Percent=66671
Whole=${Percent%???} # Whole=33 Whole=66
Percent=${Percent#$Whole} # Percent=338 Percent=671
Percent=$Whole.${Percent%?} # Percent=33.33 Percent=66.67
我々は百分のへの最終的な解決のために必要なすべてのデータを持っているように、これは1000回必要な答えを計算します。それは5を足して、1000番目の数字を適切に切り捨てることができます。次に、一時変数$Whole
を切り捨て整数値として定義し、一時的にその値を$Percent
から取り除き、1000分の1を除いてドットと小数点を追加します(正しく設定して100分の1に丸めることができます)。
関連する問題
- 1. C私は次のプログラムはCで書かれているシェルコードの実行
- 2. Pythonスクリプトは、私は私のスクリプトに次の行を実行すると
- 3. は、なぜ私は、スクリプトで次のコマンドを使用してい
- 4. 出力、私は私のスクリプトで次の2行だ
- 5. 私のCプログラムでシェルコードを実行させる
- 6. `hash`は、私は次の行でスクリプトを持っているプロセス
- 7. PHPのmysqlの、私は次のスクリプトを持つ行
- 8. は、私は次の構文を次のスクリプトを使用して、私のページでタブ付きコンテンツセクション設定してい私のタブのマークアップ
- 9. は、私はbashスクリプトから次のコマンドを実行するbashスクリプト
- 10. Perlの - 私は私のPerlスクリプトに次の行持つ正規表現
- 11. jQueryの - 私は現在、私のページで次のスクリプト持って私のDataTable
- 12. スクリプトは、私は次のスクリプトを作成している
- 13. は、私は私のスクリプトで
- 14. は、私は次の行を使用インデクシング方法でTermVectorのLucene 4.0
- 15. 更新値は、私はので、私は、次のステートメントを使用R.を使用して、私のSQLデータベース内の行を更新しよう
- 16. 私はIronPythonのを使用してPythonスクリプトを呼び出すには、次のC#コードを使用してい
- 17. CDO.Message .Sendは、私は次のコードを持っているスクリプトの実行のタイムアウト
- 18. PHPスクリプトは、私がテストとして次のスクリプトを書いた
- 19. は=私は次のコード使用
- 20. Pythonの:私は私のスクリプトを実行するとはAttributeError
- 21. Oracleは即時実行をキーワードエラー私は次のクエリを使用して、私のストアドプロシージャで
- 22. のGoogleアプリのスクリプトは、私は私のコードでは、この行を持つオブジェクト
- 23. 私は私のSSISパッケージでActiveXを呼び出す必要があるので、私は、スクリプトタスクを使用して、次のC#スクリプトを作成SSISスクリプトタスク
- 24. WWW :: Mechanizeのは、私は次のスニペットで、次のコードを使用していSSL
- 25. Nodejs:私は、スクリプトを実行するために卵を使用
- 26. パンダのデータフレーム:私は私のデータフレームにいくつかの行をフィルタリングするには、次のコードを使用し
- 27. 私は、次のパラメータ使用してい
- 28. スクリプトの変更私は、フォームの例次したスクリプト
- 29. 私のウェブサイトでPythonスクリプトを実行
- 30. PowerShellスクリプトは、私がPSで次のスクリプトを持ってPowerguiブロックとPowerShellのコンソール
返信する:https://stackoverflow.com/questions/8402181/how-do-i-get-bc1-to-print-the-leading-zero – periket2000