web-dev-qa-db-ja.com

bcはスケールオプションを無視しています

Bcツールがスケールオプションを無視することがある理由を理解できません。

次に例を示します。

> echo 'scale=2; 2.777 - 1.4744' | bc
1.3026

期待される結果は次のとおりです。

1.30

追加情報:

> 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.
21
dabest1

カールが指摘したように、manページをチェックすると、その行を見つけることができます。表現の説​​明です。減算はscale変数を読み取りません。期待した結果(1.30)を取得したい場合は、次のようにします。

kent$  echo 'scale=2; (2.777 - 1.4744)/1' | bc 
1.30

/操作はscale変数を読み取ります。

29
Kent

bc(1) manページ から:

特に言及しない限り、結果のスケールは、関係する式の最大スケールです。

1.4744はスケール4、それがあなたの表現に起こることです。

3
Carl Norum