BC - 输出范式?

BC - 输出范式?

我有一个很大的数字:

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

某些 shell(例如 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 函数...

相关内容