BC로 플로트 연산?


42

bc가 float 연산을 지원하지 않는 것 같습니다 echo 1/8 | bc.

확인 bc (1)했지만 언급조차하지 않으므로 float지원되는지 궁금합니다.


9
echo "scale=4; 1/8" | bc
LiuYan 刘 研

질문 , 특히 허용되는 답변 이 흥미로울 것입니다.
Emanuel Berg

답변:


56

bc부동 소수점을 수행하지 않지만 고정 소수점 이하 자릿수를 수행합니다. -l플래그 Hauke는 부하 예에 대한 수학 라이브러리를 언급하고있다. 삼각 함수이지만

[...] 기본 스케일 은 20입니다

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

scale=4

당신이 원하는 언제든지 ( -l사용 여부 ). 10 진수로 사용 된 유효 자릿수를 나타냅니다 . 다시 말해, 후속 솔루션은 소수점 이하 자릿수 (== 고정 정밀도) 후에 해당 자릿수로 반올림됩니다.

기본 스케일 산세 -l는 0으로, 정수로 반올림됨을 의미합니다.


27

맨 페이지 말한다 :

bc가 -l 옵션과 함께 호출되면 수학 라이브러리가 미리로드됩니다 [...]

그 이해력은 실제로 향상 될 수 있습니다 ...


14
버그로 업스트림에보고하십시오.
vonbrand

0

1) bc의 숫자는 스케일이 있습니다. 숫자의 스케일을 스케일 팩터와 혼동해서는 안됩니다. 동일한 세계 '스케일'은 숫자의 스케일을 쿼리하는 함수 또는 스케일 팩터를 설정하는 매개 변수로 사용됩니다.

echo "scale=scale(1.1);11/10" | bc will return 1.1

2) 스케일 팩터는 연산을 수행 할 때 소수점 오른쪽에 몇 자릿수가 유지되는지 결정합니다. 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,sa)

3) 기원전 bc는 dc의 전 처리기였습니다. 많은 시스템에서 bc는 독립형 프로그램입니다.

출처 : [ https://plan9.io/magic/man2html/1/dc]

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.