次の問題があります。
double a = 6.005; double b = 5.995;
たとえば、ポイントの2桁後にdoubleの精度を設定したい
double c = a+b;// I would like to get 11.99 not 12.00
.
これどうやってするの?
次の問題があります。
double a = 6.005; double b = 5.995;
たとえば、ポイントの2桁後にdoubleの精度を設定したい
double c = a+b;// I would like to get 11.99 not 12.00
.
これどうやってするの?
精度は 1 つのことです。表示用に丸められているのはまったく別です。
これは頭がおかしいと思います。得られるすべての精度が必要であり、結果が完成したときの表示の丸めについて心配する必要があります。
アップデート:
double を使用して通貨を表すべきではありません。前回見たとき、C++ はオブジェクト指向言語でした。正しいことを行い、クラスのクライアントからこれらの詳細を抽象化する Money の抽象化を作成する必要があります。
ドルで作業している場合は、通貨のプライベート表現をセントとして管理する Money クラスを作成できます。整数を使用してすべての計算を行い、最後にレンダリングします。
doubleの小数点以下2桁の精度を設定したい
100 を掛けて整数を使用するだけです。
おそらく固定小数点数を使用する必要があります。
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; }
いいえ、すべての値を 1 つずつ調整する必要があります (mul を 100 ずつ、int 部分を取り、div を 100 ずつ) か、独自の MySpecialDouble クラスを作成する必要があります (舞台裏で同じことを行います)。