計算機中儲存數字是用2進製表示的,所有在儲存double型別的資料並不能精確到0.1,
所以在用double做操作的時候會因為精度問題出現一些和實際不一樣的結果,
如果要求精度很高的話就用bigdecimal來計算,bigdecimal提供了加、減、乘、除的方法,直接呼叫就可以了。
如:計算兩個double型資料相除的百分比
/*** 計算百分比
* @param s1
* @param s2
* @param scale 對結果保留幾位小數
* @return
*/public static string calculatediscount(string s1, string s2, int scale) else
}
Float型和Double混用的結果
這個問題是出現在解析excel 中的資料,並儲存在資料庫中出現的 excel單元格中顯示的是4.44,在上面fx函式的框中顯示的是4.4413422121229 在程式中解析到的值是4.44 此時還是string型別的 正常!將string型別轉換後是 4.44000005722046異常!原因 在...
double和float的區別
float a 0.1 編譯器報錯 warning c4305 initializing truncation from const double to float 原因 在c c 中 也不知道是不是就在vc 中這樣 上述語句等號右邊0.1,我們以為它是個float,但是編譯器卻把它認為是個doub...
float和double儲存方式
在c c 中float是32位的,double是64位的,兩者在記憶體中的儲存方式和能夠表示的精度均不同,目前c c 編譯器標準都遵照ieee制定的浮點數表示法來進行float,double運算。無論是float還是double,在記憶體中的儲存主要分成三部分,分別是 1 符號位 sign 0代表正...