У меня есть этот статический метод, он получает двойное число и «режет» свой дробный хвост, оставляя две цифры после точки. работает почти все время. Я заметил, что когда
он получает 2,3, он превращает его в 2,29. Этого не происходит для 0.3, 1.3, 3.3, 4.3 и 102.3.
Код в основном умножает число на 100, использует modf, делит целочисленное значение на 100 и возвращает его.
Здесь код перехватывает это конкретное число и печатает:
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
Кто-нибудь знает, почему это происходит и как я могу это исправить?
Спасибо, и хороших выходных.