bc를 앞에 0으로 시작하는 십진수를 만드는 방법

bc를 앞에 0으로 시작하는 십진수를 만드는 방법

bc선행 0으로 소수를 시작하는 방법은 무엇입니까 ?

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

나는 0.3333을 원한다.

답변1

bc0을 추가하는 것은 기본적으로 지원되지 않습니다.

해결책은 다음과 같습니다.

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

  • %f  - 부동 소수점

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

답변2

불행하게도 bc그렇게 할 수 없도록 쓰여 있습니다. 이 진술은 이웃에도 적용됩니다 dc. 해결책으로 사람들은 종종 일부 텍스트 처리 도구를 사용하여 bc출력을 변경하거나 완전히 다른 것을 사용하거나 다른 구문을 사용하도록 제안 perl하지만 python나에게는 그러한 간단한 작업에 비해 너무 무거워 보입니다.

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

$ 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(또는 텔레타이프 인쇄!) 에서는 작동하지 않습니다 .

#!/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)

관련 정보