ネット全体を検索しましたが、私の問題の解決策が見つかりませんでした。私は単にMS Excelのように二重の値を丸める関数を必要とします。ここに私のコードは次のとおりです。MS ExcelのようにC++で二重の値を丸める
#include <iostream>
#include "math.h"
using namespace std;
double Round(double value, int precision) {
return floor(((value * pow(10.0, precision)) + 0.5))/pow(10.0, precision);
}
int main(int argc, char *argv[]) {
/* The way MS Excel does it:
1.27815 1.27840 -> 1.27828
1.27813 1.27840 -> 1.27827
1.27819 1.27843 -> 1.27831
1.27999 1.28024 -> 1.28012
1.27839 1.27866 -> 1.27853
*/
cout << Round((1.27815 + 1.27840)/2, 5) << "\n"; // *
cout << Round((1.27813 + 1.27840)/2, 5) << "\n";
cout << Round((1.27819 + 1.27843)/2, 5) << "\n";
cout << Round((1.27999 + 1.28024)/2, 5) << "\n"; // *
cout << Round((1.27839 + 1.27866)/2, 5) << "\n"; // *
if(Round((1.27815 + 1.27840)/2, 5) == 1.27828) {
cout << "Hurray...\n";
}
system("PAUSE");
return EXIT_SUCCESS;
}
私はここにStackOverflowの機能を発見した、その答えは、それが内蔵されたエクセル丸めルーチンと同じように動作することを述べたが、それはしていません。私が何が欠けているか教えてください。
あなたは条件が偽です、あなたは一般的にそのような純粋に浮動小数点値を比較することはできません。 –
実際には丸められた値が必要ですか?または、小数点以下桁数の値を*印字*したいだけですか? –
私はそれ以上の処理のためにそれを必要とします。 –