2

C ++でsetprecision(2)を使用して桁を丸めようとすると、「0.093」のような数値が返されます。小数点以下2桁ではなく、3桁です。これがなぜなのか理解できません。いくつかの点が大幅に欠落している場合に備えて、非常に基本的なコードを以下に含めました。ありがとう!

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double tax = 0.06 ; //Tax Rate
    float cost ; //Cost of item
    float computed ; //Non-rounded tax

    cout << "Enter the cost of the item: " ;
    cin >> cost ;

    computed = tax*cost;

    cout << "Computed: $" << computed << endl;
    cout << "Charged: $" << setprecision(2) << computed << endl; //Computed tax rounded to 2 decimal places



    return 0;

}
4

3 に答える 3

8

これは、小数点以下の桁std::setprecision設定せず、小数点以下の固定桁数を使用するように浮動小数点形式を変更しない場合は、重要な(「意味のある」)桁を設定するためです。フォーマットを変更するには、 (ドキュメント)を出力ストリームに入れる必要があります。std::fixed

cout << "Charged: $" << fixed << setprecision(2) << computed << endl;
于 2013-01-22T22:44:51.703 に答える
0

差出人:http ://www.cplusplus.com/reference/iomanip/setprecision/

10進精度は、浮動小数点値を表すために挿入操作で書き込まれる最大桁数を決定します。これがどのように解釈されるかは、floatfieldフォーマットフラグが特定の表記に設定されているかどうかによって異なります。
..。

デフォルトの浮動小数点表記では、精度フィールドは、小数点の前と後の両方を数えて合計で表示する意味のある桁の最大数を指定します。

あなたの場合:0.09393-2つの意味のある数字。

于 2013-01-22T22:46:57.563 に答える
0

cout<<固定<<setprecision(6)<< a << endl; //丸めたいものを、の代わりに追加します

于 2021-04-08T19:29:13.453 に答える