1

次の問題があります。

double a = 6.005; double b = 5.995;

たとえば、ポイントの2桁後にdoubleの精度を設定したい

double c = a+b;// I would like to get 11.99 not 12.00.

これどうやってするの?

4

4 に答える 4

12

精度は 1 つのことです。表示用に丸められているのはまったく別です。

これは頭​​がおかしいと思います。得られるすべての精度が必要であり、結果が完成したときの表示の丸めについて心配する必要があります。

アップデート:

double を使用して通貨を表すべきではありません。前回見たとき、C++ はオブジェクト指向言語でした。正しいことを行い、クラスのクライアントからこれらの詳細を抽象化する Money の抽象化を作成する必要があります。

ドルで作業している場合は、通貨のプライベート表現をセントとして管理する Money クラスを作成できます。整数を使用してすべての計算を行い、最後にレンダリングします。

于 2011-07-29T14:57:59.390 に答える
10

doubleの小数点以下2桁の精度を設定したい

100 を掛けて整数を使用するだけです。

于 2011-07-29T14:56:38.550 に答える
4

おそらく固定小数点数を使用する必要があります。

unsigned int a = 600;
unsigned int b = 599;

unsigned int c = a + b;

unsigned int make_fixed(double d) { return d * 100; }

void print_fixed(unsigned int n) { std::cout << n/100 << "." << n%100; }
于 2011-07-29T14:58:11.403 に答える
1

いいえ、すべての値を 1 つずつ調整する必要があります (mul を 100 ずつ、int 部分を取り、div を 100 ずつ) か、独自の MySpecialDouble クラスを作成する必要があります (舞台裏で同じことを行います)。

于 2011-07-29T15:08:12.997 に答える