今天發現了乙個小的問題,在網上找了說的不多,在這記錄下來方便自己和比人解決自己的問題吧。
**片段
1unit
=double.valueof(actionutils.getbillingtransformunit(request));//取出換算單位1000.0
2svt
=((curvesegment.getendval()+1
))/unit;//加0.001
3我們的計算最小單位是釐,頁面上的startvaltemp是元,所以必須為三位小數,當curvesegment.getendval()取出的是一千萬內的整數時,加一計算最後在頁面上都能顯示增加了一厘。當為兩千萬時,string.valueof(svt)就變成了2位小數了,從而丟失了加上的1。
引用我在mantis上的原始介紹「程式中用的數字型別float 單位是釐 填20000 後轉為20000000 後加1等於20000001 除以1000.0後的值在本地化字串時為20000.0 出現精度丟失問題 (精度問題,float精度為7--8位,8位的情況是第一位是1 當是2時進製後面的精度丟失?)」
故問題就出在使用的型別精度不滿足,屬於選擇型別問題。使用double型別解決問題
1double
unit
=double.valueof(actionutils.getbillingtransformunit(request));
2double
svt
=((curvesegment.getendval()+1
))/unit;
3
Java中float型別精度問題
今天發現了乙個小的問題,在網上找了說的不多,在這記錄下來方便自己和比人解決自己的問題吧。片段 1unit double.valueof actionutils.getbillingtransformunit request 取出換算單位1000.0 2svt curvesegment.getendv...
C 中float和double型別的精度問題說明
float和double的範圍是由指數的位數來決定的。float的指數字有8位,而double的指數字有11位,分布如下 float 1bit 符號位 8bits 指數字 23bits 尾數字 double 1bit 符號位 11bits 指數字 52bits 尾數字 在數學中,特別是在計算機相關的...
關於float的精度型別
1 主要記錄一下為什麼float的精度型別為6 7位 首先,應該明確float資料型別,佔4個位元組,共4 8 32位,其中 ieee754標準規定如下 32位當中,1位為符號位 8位指數字 23位為數值位。故float型別的數值是由後邊的23位決定。23位指的是2進製數可以表示2 23取值範圍以內...