bc는 부동 소수점 연산을 지원합니까?

bc는 부동 소수점 연산을 지원합니까?

bc는 부동 소수점 연산을 지원하지 않는 것 같습니다. 이렇게 하면 echo 1/8 | bc0점을 줍니다. 매뉴얼 페이지를 확인했지만 bc (1)언급조차 되지 않아서 float지원되는지 궁금합니다.

답변1

bc부동 소수점 숫자는 처리하지 않지만 고정밀도 십진수는 처리합니다. 예를 들어 Hauke가 언급한 플래그는 -l수학 라이브러리를 로드합니다. 삼각 함수이지만 이는 또한 다음을 의미합니다.

[...]기본값규모20이다

scale매뉴얼 페이지에 언급된 많은 "특수 변수" 중 하나입니다. 다음과 같이 설정할 수 있습니다.

scale=4

원할 때마다( -l사용 여부에 관계없이). 그것은 다음을 가리킨다소수점 이하 자릿수에 사용되는 유효 자릿수. 즉, 후속 솔루션은 반올림됩니다.아래에소수점 이하 자릿수(== 고정 정밀도).

기본 스케일 sans -l는 0입니다. 이는 정수로 반올림(내림)됨을 의미합니다.

답변2

매뉴얼 페이지에는 다음과 같이 나와 있습니다.

-l 옵션을 사용하여 bc를 호출하면 수학 라이브러리가 미리 로드됩니다. [...]

이해도가 정말 좋아지겠죠...

답변3

  1. 숫자 bc가 하나 들어있어요규모. 숫자의 비율을 배율 인수와 혼동해서는 안 됩니다. 동일한 세계가 scale숫자의 스케일을 쿼리하는 함수로 사용되거나 스케일 인수를 설정하는 인수로 사용됩니다.

    echo "scale=scale(1.1);11/10" | bc will return 1.1
    
  2. 스케일링 계수( scale변수/레지스터의 값)는 작업을 수행할 때 소수점 오른쪽에 유지되는 자릿수를 결정합니다. s현재 배율 인수가 sa첫 번째 피연산자의 배율 a이고 sb두 번째 피연산자의 배율인 경우 b결과는 다음과 같이 잘립니다.

        scale of result
    a+b     max(sa,sb)
    a-b     max(sa,sb)
    a*b     min(sa+sb , max(s,sa,sb))
    a/b     s
    a%b     so that a = b*quotient + remainder; remainder has sign of a
    a^b     min(sa×|b|, max(s,sa)); b must be integer
    sqrt(a) max(s,as)
    
  3. 원래 bcdc. 이제는 많은 시스템에서 bc독립 실행형 프로그램입니다.

당신은 또한 볼 수 있습니다POSIX 사양bc.

답변4

MacOS의 대체 경로(간단히 말하면)는 옵션 -e과 함께 옵션을 사용하는 것입니다 -l.

  -e  expr  --expression=expr

      Run "expr" and quit. If multiple expressions or files (see below) are
      given, they are all run before executing from stdin.

예:bc -e 1/8 -l

관련 정보