14

浮動小数点を 2 ポイントに丸める方法はありますか? 例:3576.7675745342556になり3576.76ます。

4

9 に答える 9

18
round(x * 100) / 100.0

フロートを維持する必要がある場合:

roundf(x * 100) / 100.0

標準ライブラリ関数を使用した柔軟なバージョン:

double GetFloatPrecision(double value, double precision)
{
    return (floor((value * pow(10, precision) + 0.5)) / pow(10, precision)); 
}
于 2010-08-01T21:29:59.727 に答える
14

印刷する場合は、代わりに、使用可能な印刷フォーマット機能を使用してください。

C++では

cout << setprecision(2) << f; 

GUIにレンダリングするための丸めには、std::ostringstreamを使用します

于 2010-08-01T21:54:27.403 に答える
3

私のようにフロートをお金にフォーマットするためにグーグルで検索している方のために:

#include <iomanip>
#include <sstream>
#include <string>

std::string money_format (float val)
{
    std::ostringstream oss;

    oss << std::fixed << std::setfill ('0') << std::setprecision (2) << val;

    return oss.str();
}
// 12.3456 --> "12.35"
// 1.2 --> "1.20"

文字列として返す必要があります。float に戻すと、精度が失われます。

于 2015-07-30T19:05:59.420 に答える
3

100 を掛け、整数に丸め (いずれにせよ)、100 で割ります。

于 2010-08-01T21:30:55.450 に答える
2

フロートを使用しないでください。ドルを印刷する場合は、セント数を格納する整数を使用し、最後の 2 桁の前に小数点を印刷します。単純な計算 (単純な経済数学モデルなど) を行っていない限り、実際には数値の大きさのみが重要であり、近くの数値を減算することはありません

于 2010-08-02T05:41:44.383 に答える
0

精度を制限するには:
x が浮動小数点数の場合、丸めは行われません:
(10 進数で 2 桁上にシフトし、端数を取り除き、10 進数で 2 桁下にシフトします)

((int)(x*100.0)) / 100.0F

丸め付きフロート:

((int)(x*100.0 + 0.5F)) / 100.0F

丸めなしの倍精度:

((long int)(x*100.0)) / 100.0

倍精度丸め:

((long int)(x*100.0 + 0.5)) / 100.0

注: x は afloatまたは adoubleであるため、小数部分は常に存在します。これは、# の表現方法 ( IEEE 754 ) と # の精度の違いです。
C99 はround()をサポートします

于 2013-08-06T16:22:42.723 に答える
0

これを試してみてください、それは完全に機能します

float=3576.7675745342556;
printf("%.2f",float);

その中のいくつかのオブジェクトを変更して、コードを見て学習します。

于 2017-10-15T04:43:13.620 に答える