Bc

如何讓 bc 顯示 10 而不是 10.00

  • August 2, 2019
#!/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"

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