Bc
如何讓 bc 顯示 10 而不是 10.00
#!/bin/bash q=$(bc <<< "scale=2;$p*100") head -n$q numbers.txt > secondcoordinate.txt
這只是劇本的一部分,但我認為這足以闡明我的意圖。
p
是一個只有兩位小數的變數,所以q
應該是一個整數……但是,bc
例如,顯示10.00
而不是10
.我該如何解決這個問題?
scale=0
由於規模的確定方式,您不能用明顯的方式做到這一點。該文件間接解釋說,除以一足以重置輸出以匹配 的值
scale
,預設為零:expr1 / expr2 表達式的結果是兩個表達式的商。結果的比例是變數比例的值。
p=12.34; echo "($p*100)" | bc 1234.00 p=12.34; echo "($p*100)/1" | bc 1234
如果您的版本
bc
不處理此問題,請sed
改為通過管道傳輸:p=12.34; echo "($p*100)" | bc | sed 's!\.0*$!!' 1234
此 RE 只會從整數中去除尾隨零。所以 3.00 會減少到 3,但 3.10 不會減少到 3.1。如果您確實需要從十進制數中去除尾隨零的全部功能,則需要 PCRE:
p=12.34; echo "($p*100)" | bc | perl -pe '/\./ && s/0+$/$1/ && s/\.$//'
但是,如果您要使用,
perl
那麼您不妨一開始就省去bc
:p=12.34; perl -e '$p = shift; print $p * 100, "\n"' "$p"