-1

私は浮動小数点数を持っていますが、精度が 2 ポイントまでの数値だけが必要です。これを C++ で取得するにはどうすればよいですか?

float foo(float num) { // num=1234.567891
    // code
    return num2;           // returns 1234.560000
}
4

3 に答える 3

1

簡単な方法は次のとおりです。

float foo(float num) {
    return floor(num * 100) / 100;
}

次のことも検討してください。

float foo(float num) {
    return (int)(num * 100) / 100.0f;
}

負の数との違いがあるかもしれません。あなたの質問から私が得ることができる唯一の情報は、あなたが望む正の数ですfloorround例ではありません)。

于 2013-02-04T12:55:42.760 に答える
0

乗算および丸め/切り捨てにより、浮動小数点数を特定の小数点以下の桁数に丸めることができます。

そのため、小数点以下 2 桁に切り捨てよnum = floor(num * 100.f) / 100.f;うとします。

ただし、これはfloatの精度を固定することと同じではないことに注意してください。定義により、浮動小数点数の小数点はfloatです。また、精度は約 7 桁しかありません。

したがって、元の数値を「1234.567891」ほど正確にすることはできません。これは float には精度が高すぎます。

そしておそらくもっと重要なことに、そのような関数からの出力も正確ではない可能性があります。「1234.56」は float では正確に表現できないため、返される値は「1234.560000」にはなりません。

数値の整数部分が大きいほど、小数点以下を表すことができる桁数が少なくなります。実際、適度に大きな数でさえ、小数部分をまったく表すことはできません。

于 2013-02-04T13:17:55.613 に答える