私はこの静的メソッドを持っています。これは double を受け取り、小数点以下の末尾を「カット」して、ドットの後に 2 桁を残します。ほとんど常に動作します。2.3 を受け取ると、2.29 に変わることに気付きました。これは、0.3、1.3、3.3、4.3、および 102.3 では発生しません。コードは基本的に数値を 100 で乗算し、modf は整数値を 100 で除算して返します。ここで、コードはこの 1 つの特定の番号をキャッチして出力します。
static double dRound(double number) {
bool c = false;
if (number == 2.3)
c = true;
int factor = pow(10, 2);
number *= factor;
if (c) {
cout << " number *= factor : " << number << endl;
//number = 230;// When this is not marked as comment the code works well.
}
double returnVal;
if (c){
cout << " fractional : " << modf(number, &returnVal) << endl;
cout << " integer : " <<returnVal << endl;
}
modf(number, &returnVal);
return returnVal / factor;
}
それは出力します:
数・=係数:230
分数: 1
整数: 229
なぜこれが起こっているのか、どうすれば修正できるのか誰か知っていますか? ありがとう、そして素晴らしい週末を。