我想提取一個浮點值的整數和小數部分,而且我似乎遇到了一些奇怪的舍入問題,這可能是由於存儲的浮點數不精確。像sprintf這樣的顯示函數如何將數字轉換爲字符串?
我有一些像這樣的代碼來提取小數部分:
double number = 2.01;
int frac = int(floor(number * 100)) % 100;
然而在這裏,而不是1的結果出來爲0。這似乎是因爲原來的雙實際上被存儲爲:
2.0099999...
但是運行的sprintf似乎得到這樣一個正確的轉換:
char num_string[99];
sprintf(num_string,"%f",number);
sprintf如何在上述方法不正確的情況下得到正確答案?
感謝您指出我的錯誤,我真的應該避免在深夜寫下這樣的問題。 – 2009-02-23 06:03:00
你能解決它嗎? – dirkgently 2009-02-23 06:11:02