BC - 末尾没有“\\n”+ 以零开头?

Lan*_*nes 3 bash bc

这是一个bc输出,例如:

输入:

echo "scale=10; BLA-BLA-HERE-NOT-IMPORTANT" | bc
Run Code Online (Sandbox Code Playgroud)

输出:

.3708446283953709207058828124021300754352578903651372655882743141882\
77124645102027246581819139527644919407424570060822470537797066353573\
96635.8038454068 days
Run Code Online (Sandbox Code Playgroud)

两个问题:

  • 输出可以四舍五入为“0.3708 ...”之类的东西吗?
  • 我可以从末尾删除“\n”-s 吗?

我在bc.

del*_*ray 7

对于 GNU 的实现bc,您可以设置一个环境变量来调用BC_LINE_LENGTH它,该变量将禁用反斜杠 + 换行符功能或扩展它。较新的版本允许您使用 0 值禁用它,如下所示:

BC_LINE_LENGTH=0 bc <<<"2^4096"
Run Code Online (Sandbox Code Playgroud)

旧版本没有“0 关闭”功能,需要您将值设置为足够大的值,以免影响您:

BC_LINE_LENGTH=10000 bc <<<"2^4096"
Run Code Online (Sandbox Code Playgroud)

如果您经常使用 bc 并且不喜欢换行,这似乎是在 shell 中设置的一个很好的环境变量。如果您正在使用bash,只需将其放在您的.bashrc

export BC_LINE_LENGTH=0
Run Code Online (Sandbox Code Playgroud)


Bar*_*run 5

你可以试试这样的代码:

echo "scale = 4;  3.5678/3" | bc | tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)

设置scalebc应该完成舍入工作。您可以用所需的命令替换除法部分。的输出bc再次通过管道传输到tr,它将换行符 ( \n)转换为空白。对于上述命令,我得到以下输出:

1.1892 user@localhost:~/codes$
Run Code Online (Sandbox Code Playgroud)