私はCに新たなんだ++。私はdigits.So a
が0.12
なり、小数点2から変数a
を制限したいダブル変数double a=0.1239857
を持っています。 C++には、ceilやfloorのようなa
より大きいか小さい整数を返す関数があります。浮動小数点変数の桁制限を実装する関数はありますか?または、a
の精度をどのように変更できますか?制限
お問い合わせ
私はCに新たなんだ++。私はdigits.So a
が0.12
なり、小数点2から変数a
を制限したいダブル変数double a=0.1239857
を持っています。 C++には、ceilやfloorのようなa
より大きいか小さい整数を返す関数があります。浮動小数点変数の桁制限を実装する関数はありますか?または、a
の精度をどのように変更できますか?制限
お問い合わせ
あなたは変数を制限したいとお考えですか?値またはその書式。この値にはfloor + divisionを使用できます。次のようなものがあります。
double a = 0.12123
double b;
b = floor(a * 100)/100
これは、小数点以下2桁になります。
a = floor(a * 100.0)/100.0;
OPから尋ねられませんでしたが、 'a'を印刷すると2桁しか表示されないことに注意してください。丸め誤差が発生します。 – AbdealiJK
実際に数値を丸めるか、表示精度を変更しますか?
前者(余分な桁を切り捨て):後者の場合
double scale = 0.01; // i.e. round to nearest one-hundreth
value = (int)(value/scale) * scale;
または(jherikoの答えにつき、必要に応じて/ダウン切り上げ)
double scale = 0.01; // i.e. round to nearest one-hundreth
value = floor(value/scale + 0.5) * scale;
:
cout << setprecision(2) << value;
setprecision()
へのパラメータは、小数点の後に表示される最大桁数です。
あなたが表示するようなストリームでsetprecisionを使うと、それも丸くなることに注意してください。 –
ブライアン - 詳細を教えてください。確かに、適切な数の位に切り上げまたは切り下げられますが、変数に実際に格納されている値は変更されません。 – Alnitak
coutに表示すると、値は適切な精度に丸められます。もちろん、変数の値には影響しません。 –
あなただけの出力に値をしたい場合、あなたは値そのものを変換したい場合は、あなたが行うことができます
printf("%.3f", a); // Output value with 3 digits after comma
ような何かを行うことができます。
a = (int)(a * 1000)/1000.0f;
注両方が無行うこと四捨五入すると、値が切り捨てられます。
i/oの書式設定にはios_base::precision
を使用してください。
ストリームの精度を設定することができます。
double d = 3.14579;
cout.precision(2);
cout << d << endl;
// Or use a manipulator
#include <iomanip>
cout << setprecision(2) << d << endl;
(注)このような流れにdoubleまたはfloatを送信するとき、それは(あなたがこれを認識していない場合は、時にはあなたをつまずかせることができます)あなたのためのラウンドに自動的になること。
丸められる値が変数 "x"であると仮定すると、実際の丸め解法はx = floor(100*x + 0.5)/100;
となります。
ここで他の人が推奨するx = floor(100*x)/100;
は実際には2dpに切り捨てられます。
私はlinefloor(100 * x + 0.5)/ 100を理解できませんでした。 – Kapil
あなたはまた、このような何かを行うことができます:
//This code will ask the user for an input, set the decimal precision to the hundredths place, and add 4.63 to the inputted variable
int banana;
cin >> banana;
cout << setprecision(2) << fixed << banana + 4.63;
のstd ::固定を使用して必要な形式 http://stackoverflow.com/questions/5907031/printing-theにつながるこの答えに示すように、 -correct-with-cout-of-cout –