[ÀÚ¹®ÀÚ´ä] ½© ½ºÅ©¸³Æ®ÀÇ ¿¬»ê°ú ¼ö¼ýÁ¡ °á°úÀÇ Å©±â ºñ±³´Â ¾î¶»°Ô Çϴ°¡?

   Á¶È¸ 6478   Ãßõ 0    

기본적으로 리눅스에서 숫자는 정수형을 사용한다는 사실입니다.

그래서 계산할때는 정수형을 선언해주기도 합니다.


그런데

두 정수를 나눗셈 하고 싶을 때는

단순히 expr 를 사용하지 않습니다.


리눅스 계산기 bc 를 사용해야 합니다. ㅎㅎㅎ

여기서 scale=3은 소숫점 세자리를 의미합니다.

width=640
height=360

echo "scale=3; $width/$height" | bc -l


위의 결과를 변수에 담으려면 아래와 같이 합니다.

res=`echo "scale=3; $width/$height" | bc -l`

아니면 아래와 같이 담아도 됩니다.

res=$(echo "scale=3; $width/$height" | bc -l)


여기서 문제는 이러한 결과가 1.777 이 나오는데...

이것을 소수점 3자리 숫자인데...

리눅스 쉘 스크립트에서는 소숫점 비교를 하려고 했을 때 

죄송합니다. 정수형이 아닙니다. 라고 에러를 내버립니다.


그렇다면 소수점 비교를 할 수 없는가? 

하지만 그렇지 않습니다. 가능합니다.

위의 내용을 아래 예제로 정리합니다. 참고가 되시길 바랍니다.


width=640

height=360


res=`echo "scale=3; $width/$height" | bc -l`

echo -e $res


ratio=1.5

if [ $(echo "scale=1;$res > $ratio" | bc) -ne 0 ]

then echo -e "$ratio 보다 크다";

else echo -e "$ratio 보다 작다";

fi


예전에 나를 도와준 마틴님이란 분이 있어 그분을 기억합니다.
2cpu의 도움주신 많은 분들께 늘 감사드립니다.
☎ HP 010-9678-7900
ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
½© ½ºÅ©¸³Æ®¿¡¼­ ¼Ò¼ýÁ¡ ¼ýÀÚ¸¦ ºñ±³ÇÏ´Â °ÍÀº
»ç½Ç ½±Áö ¾Ê°í ±î´Ù·Ó½À´Ï´Ù.
ÇÏÁö¸¸ À§ÀÇ  ¹æ½ÄÀ» »ç¿ëÇÏ¸é ¾ÆÁÖ ½±°Ô °£ÆíÇÏ°Ô ÇØ°áÀÌ µË´Ï´Ù.

ÇÊ¿äÇϽŠºÐµé¿¡°Ô Âü°í°¡ µÇ½Ãµµ·Ï ±ÛÀ» Á¤¸®Çص帳´Ï´Ù.
ÀÌ·¸°Ô Á¤¸®ÇϱⰡ ½±Áö ¾Ê¾Ò½À´Ï´Ù.¤¾¤¾
´Ù¾çÇÑ ¹æ¹ýÀÌ ÀÖ±ä ÇÏÁö¸¸ ÀÌ°Ô °¡Àå ÇÙ½ÉÀûÀÎ Á¤¸®°¡ µÉ °ÍÀ¸·Î »ý°¢µì´Ï´Ù.
RTOS ÀÇ ksh ·Î ½ÃÇèÇÑ °á°úÀÔ´Ï´Ù.

# ./tt.sh
# 7777
# 5 º¸´Ù Å©´Ù


QnA
Á¦¸ñPage 1010/5696
2015-12   1566186   ¹é¸Þ°¡
2014-05   5029618   Á¤ÀºÁØ1
2021-09   3108   ÇູÇϼ¼
2020-01   3108   ÄðÄðÄð
2021-02   3108   ¹ÙºÎ123
2020-08   3108   ÀÌÈñÁÖ
2018-08   3108   Æ丣¼¼¿ì½º
2019-02   3108   ÀÌÁöÆ÷Åä
2020-04   3108   ĵÀ§µå
2019-06   3108   ÀÌÀ¯Á¾
2017-05   3108   NGC
2017-08   3108   ÀÌÀç¿ëÀÔ´Ï´Ù
2021-03   3108   Ãò¹Ì¾Æ
2020-02   3108   ¿Ã»©¹ÌÀá¿Í
2019-11   3109   ³ªÆÄÀÌ°­½ÂÈÆ
2017-04   3109   ÇູÇϼ¼
2015-12   3109   À©µµ¿ì10
2019-04   3109   ÇູÇϼ¼
2020-12   3109   »ßµ¹À̽½ÇÄÀÌ
2021-01   3109   ¸·ÆÇ´ëÀå
2019-12   3109   galaxyfamily
2019-01   3109   ½ºÅ丮