四捨五入 |
尚未結案
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
#includefloat j = (int)((i*1000) 0.5)/1000.0; 為什麼這邊使用(int)而不是(float)搞不懂 (int)是屬於)((i*1000) 0.5)嗎??? 而不是(int)((i*1000) 0.5)/1000.0;整個的型態嗎?? 還有請問下面有效位問題~ #include |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
您好:
1.
float j = (int)((i*1000)+0.5)/1000.0;
為什麼這邊使用(int)而不是(float)搞不懂
使用甚麼都可以,是要看您得到甚麼。 (int)是屬於)((i*1000)+0.5)嗎???
而不是(int)((i*1000)+0.5)/1000.0;整個的型態嗎??
是的。 我想他應該是舉例給您看吧。
正常數學來講
30.123556*1000+0.5=30124.056
30124.056/1000=30.124056
他的範例
30.123556*1000+0.5=30124.056(轉成整數)
30124/1000=30.124xxx(轉成浮點數)
xxx在轉成整數時已經不見了。 如果改為
float i = 30.123556;
float j = (float)((i*1000)+0.5)/1000.0;
30.123556*1000+0.5=30124.056(浮點數)
30124.056/1000=30.124056(浮點數)
若改為float則可以保持他的精密度,達成一般數學運算所得到的值 2.我把他改成以下這樣也許您就知道了,以float來說,精密度7,並不代表7以後沒東西,只是保證7位數正確,第8位後面被4捨五入,就不會是您要的了。
好像國小教的1.235取小數點後兩位,然後我們會把第三位4捨五入變成1.24(應該是,記憶遙遠)
所以你會發現,當
src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=23429628&CC=523992"> 發表人 - supman 於 2005/07/13 02:04:46
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |