bc가 앞에 0을 사용하여 소수 분수를 시작하도록 하려면 어떻게 해야 합니까?

bc가 앞에 0을 사용하여 소수 분수를 시작하도록 하려면 어떻게 해야 합니까?

bc앞에 0을 붙여 소수 분수를 시작하려면 어떻게 해야 합니까 ?

$ bc <<< 'scale=4; 1/3'
  .3333

나는 0.3333을 원한다.

답변1

bc기본적으로 0 추가를 지원하지 않습니다.

해결 방법은 다음과 같습니다.

echo 'scale=4; 1/3' | bc -l | awk '{printf "%.4f\n", $0}'
0.3333
  • \n  – 개행 문자로 출력을 종료합니다.

  • %f  – 부동 소수점

  • %.4f– 표시할 자릿수입니다. 소수점 이하 4자리를 지정합니다.

답변2

불행하게도 bc당신이 할 수 없는 방식으로 쓰여졌습니다. 이 설명은 이웃에도 적용됩니다 dc. 해결책으로 사람들은 일반적으로 일부 텍스트 처리 도구를 사용하여 출력을 변경하거나 구문이 다른 완전히 다른 도구를 사용하도록 제안 하지만 bc나 에게는 이러한 간단한 작업에는 너무 무거워 보입니다.perlpython

다른 질문에 따르면 귀하는 사용자인 것으로 보이 므로 다음과 같은 기본 작업에 대해 매우 유사한 구문을 사용하는 zsh것을 제안합니다 .zcalcbc

$ zcalc -e '1/3'
0.333333

먼저 이 함수(예: inside )를 로드해야 하며 옵션 .zshrc을 사용하여 항상 모든 숫자를 부동 소수점으로 처리하고 싶을 수도 있습니다 -f.

autoload -U zcalc
alias zcalc='zcalc -f'

보너스로 매개변수를 사용하여 계산기에 대한 특수 프롬프트를 정의할 수 있습니다 . ZCALCPROMPT자세한 내용은 을 참조하세요 man zshcontrib.

답변3

bc앞에 0을 사용하도록 설득될 수 있습니다.

for div in 10 1000; do 
  echo "scale=3;v=158/$div; if(v > -1 && v < 1) print 0,v,\"\n\" else print v, \"\n\"" | bc
done

답변4

이것은 이전 답변을 사용하여 실패를 해결하는 벨트 및 브레이스 솔루션입니다. 이 작은 기능은 선행 0과 음수 기호를 언제, 어디에 붙일지 지능적으로 파악하고 backspace제어 코드를 사용하여 인쇄된 값에서 뒤로 이동합니다. Posix 모드에서는 작동하지 않습니다 -s|--standard(또는 Teletype으로 인쇄된 경우!):

#!/usr/bin/env bc
# this is lz.bc
define lz(d) {
  if (ibase != 10 || obase != 10) {
    print "(io)base must be decimal (10)\n"
    return -1
  }
  n=0; b=0; a=0
  if (d<0) n=1 # negative
  if (d>-1 && d<0) b=1 # below
  if (d>0 && d<1) a=1  # above
  print " ", d
  for (i=length(d)+1; i>=0; i--) {
    print "\b"
    if(i==0 && (b || a)) print "0\b\b"
  }
  if(n) print "-"
  print "\n"
  return 0
}

v[0]=-.234
v[1]=.234
v[2]=-2.345
v[3]=2.345
v[4]=-123.4567
v[5]=123.456
for(x=0;x<6;x++) {
  print v[x], " ... "
  r=lz(v[x])
}
obase=16
r=lz(v[5])
quit

호출되면 다음이 표시됩니다.

$ bc lz.bc 
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
-.234 ... -0.234
.234 ... 0.234
-2.345 ...  -2.345
2.345 ...  2.345
-123.4567 ...  -123.4567
123.456 ...  123.456
(io)base must be decimal (10)

관련 정보