我有這個靜態方法,它接收到一個雙精度值並「削減」它的分數尾部,在點之後留下兩個數字。工程幾乎一直。我注意到當 它收到2.3它變成2.29。這在0.3,1.3,3.3,4.3和102.3中不會發生。 代碼基本上乘以100乘以modf將整數值除以100並返回它。 這裏代碼捕獲這一個特定號碼,並打印出:modf返回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
有人知道爲什麼會發生這種情況,我該如何解決這個問題? 謝謝你,祝你週末愉快。
那麼,有沒有更好的方式來「切割」這個尾巴和點後只留下第2位四捨五入沒有? – Matti 2010-10-07 17:43:21
@Matti:查看更新。 – kennytm 2010-10-07 18:09:10