眾所周知,CLDC1.0不支持浮點數,即不支持float和double兩種基本數據類型,但是在程序中,我們經常需要使用一些浮點數來進行運算。這個時候你可以使用MathFP浮點數庫,但是有些時候我們做的工作很簡單,對於結果的要求也不精確,這個時候,我們就可以使用以下方法來模擬浮點運算。
模擬浮點運算的原理其實很簡單,就是先將需要運算的數字擴大10的整數次方倍然後進行運算。
例如,你需要計算一個圓的周長,假設圓的半徑為6,則圓的周長應該為2 * 6 * 3.14,而CLDC1.0中沒有浮點數,使用數字3來代替3.14誤差又比較大,則可以這樣來處理:
(2 * 6 * 314) / 100
即先將需要運算的浮點數,如3.14擴大100倍,然後在運算結束時再除以100即可。
如下是簡單的實現代碼:
//計算圓周長
int r = 6;
int pi = 314;
int l = 0;
l = (2 * 6 * 314)/100;
則變量l就是近似的圓周長。
注意,上面的計算使用的是數學上的去1法,即不管小數部分是多少都捨去。如果想更加精確一些(當然還是不夠准確),可以再使用四捨五入,這樣上面的代碼可以修改為:
//計算圓周長
int r = 6;
int pi = 314;
int l = 0;
l = (2 * 6 * 314 + 50)/100;
這裡在運算結果的基礎上加上50就實現了四捨五入,如果你的小數後面是3位,則需要加上500,依次類推。
這樣,通過上面的方式,可以實現近似的浮點運算,雖然不是很准確,但是還是可以適用一些要求不高的場合。
當然,隨著CLDC1.1的普及,將為J2ME帶來float和double這兩種數據類型,那個時候就不需要這些內容了。