bc忽略了比例选项

dab*_*st1 21 linux bash bc

我无法弄清楚为什么bc工具有时会忽略缩放选项.

这是一个例子:

> echo 'scale=2; 2.777 - 1.4744' | bc
1.3026
Run Code Online (Sandbox Code Playgroud)

预期结果是:

1.30
Run Code Online (Sandbox Code Playgroud)

附加信息:

> bash --version
GNU bash, version 2.05b.0(1)-release (x86_64-suse-linux)
Copyright (C) 2002 Free Software Foundation, Inc.
> bc --version
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

Ken*_*ent 28

正如卡尔所指出的那样,如果你查看手册页,就可以找到该行.这是关于表达的解释.减法不会读取scale变量.如果你想得到预期的结果(1.30),你可以:

kent$  echo 'scale=2; (2.777 - 1.4744)/1' | bc 
1.30
Run Code Online (Sandbox Code Playgroud)

/操作将读取scale变量.

  • 这个工具需要用火来杀死.精神错乱. (16认同)

Car*_*rum 5

bc(1)手册页

除非特别提及,结果的小数位数是所涉及表达式的最大小数位数。

1.4744有scale 4,所以这就是你的表达所发生的情况。

  • 并且:除法使用“scale”变量,但不使用加法、减法或乘法。他们使用操作数的比例。“`expr / expr`:表达式的结果是两个表达式的商。结果的小数位数是变量“scale”的值。” (5认同)