bash에서 음의 부동 소수점을 비교하는 방법 소수점 비교에서 실패합니다. 우리가 뭘 잘못하고

스크립트를 테스트했는데 bash에서 음의 부동 소수점 비교에서 실패합니다. 우리가 뭘 잘못하고 있니?

$F1=10000000000
$F2=300
FLP=$(bc <<< "scale=5; ($F2 - $F1)/$F2 * 100")
if [ $FLP -eq "1" ]; then
    echo " greater"
else
    echo "smaller"
fi

-99.99900으로 “더 크게”계속 인쇄합니다.

도움을 주셔서 감사합니다



답변

#!/bin/bash

F1=$1
F2=$2
FLP=$(bc <<< "scale=5; (${F2} - ${F1})/${F2} * 100")

if (( $(echo "${FLP} 1" | awk '{print ($1 > $2)}') )); then
  echo "greater"
else
  echo "smaller"
 fi

채택 : https://stackoverflow.com/questions/11237794/how-to-compare-two-decimal-numbers-in-bash-awk


답변

유형 -eq을 비교 하는 상태에 대한 배쉬 도움말 INTEGER. 에 부동 소수점 지원이 없습니다 [.

내가 권장하는 것은 이미 bc계산에 사용 bc하고 있다는 것입니다. 비교에도 사용 하지 않습니까? 대신에, 마찬가지로 if A < B당신이 테스트 수, if B-A > 0뺄셈이 수행되는 경우, bc및 신호 점검이 쉽게 떠들썩한 파티에서 할 수.


답변