나는 많은 숫자를 가지고 있습니다 :
2923174917395723957
그것은 다음과 같습니다:
2,923*10^18
이 출력을 제공할 수 있는 매개변수가 bc에 있습니까?
예를 들어:
$ echo '2923174917395723956 + 1' | bc
2,923*10^18
$
아니면 그런... 요점은 간략하게 살펴봐야 한다는 것입니다
. 감사합니다!
답변1
printf 명령을 사용해 보십시오:
$ printf "%e\n" 2923174917395723957
2.923175e+18
물론, 귀하의 로케일에서는 , 대신 를 사용해야 합니다. 예를 들어 다음과 같이 형식을 보다 정확하게 제어할 수도 있습니다.
$ printf "%.3e\n" 2923174917395723957
2.923e+18
일부 셸(예: bash)에는 printf라는 내장 명령이 있는데, 이는 시스템과 함께 제공되는 다른 printf 명령과 다를 수 있지만 일반적으로 위와 같은 간단한 명령과 차이를 느낄 수 없습니다. Perl의 printf를 사용할 수도 있는데 이는 매우 일관성이 있습니다.
$ perl -e 'printf "%.3e\n", 2923174917395723957'
2.923e+18
답변2
bc에서 숫자는 프로세서 방식이 아닌 십진수(실제로는 100진수, 바이트당 한 자리)로 표시됩니다. 숫자는 내보내지고 bc 내부 레지스트리에 저장됩니다. 인쇄 기능에는 지수와 함께 숫자를 인쇄하는 옵션이 없습니다. 하지만 BC주에서는 무엇이든 가능합니다. 숫자 출력 형식을 지정하는 함수를 직접 만들 수 있습니다. 함수를 파일에 저장하고 파일 경로를 BC_ENV_ARGS 변수에 추가하면 bc가 호출될 때마다 함수를 사용할 수 있습니다.
확인하다http://phodd.net/gnu-bc/code/output_formatting.bc printfe 함수의 경우...