bc는 부동 소수점 연산을 지원하지 않는 것 같습니다. 이렇게 하면 echo 1/8 | bc
0점을 줍니다. 매뉴얼 페이지를 확인했지만 bc (1)
언급조차 되지 않아서 float
지원되는지 궁금합니다.
답변1
bc
부동 소수점 숫자는 처리하지 않지만 고정밀도 십진수는 처리합니다. 예를 들어 Hauke가 언급한 플래그는 -l
수학 라이브러리를 로드합니다. 삼각 함수이지만 이는 또한 다음을 의미합니다.
[...]기본값규모20이다
scale
매뉴얼 페이지에 언급된 많은 "특수 변수" 중 하나입니다. 다음과 같이 설정할 수 있습니다.
scale=4
원할 때마다( -l
사용 여부에 관계없이). 그것은 다음을 가리킨다소수점 이하 자릿수에 사용되는 유효 자릿수. 즉, 후속 솔루션은 반올림됩니다.아래에소수점 이하 자릿수(== 고정 정밀도).
기본 스케일 sans -l
는 0입니다. 이는 정수로 반올림(내림)됨을 의미합니다.
답변2
매뉴얼 페이지에는 다음과 같이 나와 있습니다.
-l 옵션을 사용하여 bc를 호출하면 수학 라이브러리가 미리 로드됩니다. [...]
이해도가 정말 좋아지겠죠...
답변3
숫자
bc
가 하나 들어있어요규모. 숫자의 비율을 배율 인수와 혼동해서는 안 됩니다. 동일한 세계가scale
숫자의 스케일을 쿼리하는 함수로 사용되거나 스케일 인수를 설정하는 인수로 사용됩니다.echo "scale=scale(1.1);11/10" | bc will return 1.1
스케일링 계수(
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)
원래
bc
는dc
. 이제는 많은 시스템에서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