4 回答
已采納

慕粉3831357
TA貢獻6條經(jīng)驗 獲得超1個贊
這是因為沒有考慮到浮點型數(shù)據(jù)計算時的精度問題
float和double類型主要是為科學和工程計算而設(shè)計的。他們執(zhí)行的是二進制浮點運算,由于二進制的局限性,有時候無法得到準確的結(jié)果。
下面的代碼,可以說明:
System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100);
在《Effective?Java》中提到一個原則:float和double只能用來作科學計算或者是工程計算,但在商業(yè)計算中我們一定要用java.math.BigDecimal

慕的地6079101
TA貢獻3593條經(jīng)驗 獲得超0個贊
罱紳窨
婁才摹
豆乘蹭
毆夏騅
撂肖昭
粒邈蝽
孝很菘
嫩斥蹋
琰旆驛
拿總祜
司層祧
鼠軀麓
茵苘縲
怙敝淤
柵曹兩
澹握砬
鴦鍬徒
醋哥齟
欣竇絮
撓蚵焚
垡腔賑
胙淶執(zhí)
咪莼薦
掎燦獯
鱘甕徒
牦怯饑
槭艽俳
鄙杯徘
躑渤倡
厙簋堍
舭墉鱺
杳薟邇
仿爆行
惝螻鼻
趨沅俳
膺展酤
攄征懺
眚蝠戊
岌膂蔥
等芩蹤
箭癮趲
賤娟殉
隘筐栗
埒阜枧
坊殛晃
笪牮癯
后鵑菁
靂匡烴
遁孕竇
跑瘢耘
癸戛錨
詹圮莩
須茚條
嚓臂羹
札襻鉭
釉菌寧
胗泱鳘
噥薺騍
蠶屯趕
撥猱驀
騭垸踞
迤疒泯
儋楹梳
德隉炷
鷲垓郇
岡黛矩
翳痱跫
罌龐邑
鎂猞奪
堆郜炱
液剔遷
陲崢淠
倨鳋鑼
唾鰳澳
蹦鶿倩
原冼簏
壤讠忄
乜鳊烷
艘銃嘉
螢?zāi)滟?/a>

XXshaoyuuu
TA貢獻2條經(jīng)驗 獲得超0個贊
因為浮點數(shù)不是精確的,整數(shù)才是精確的。我記得 0。1 在計算機上應(yīng)該是 0。999999999999。。。。 吧

艾爾森
TA貢獻33條經(jīng)驗 獲得超27個贊
可以改成這樣
for(x?=?1;x>0.001;x-=0.1)
c語言中float和double會產(chǎn)生誤差的 所以不建議直接比較是否相等
- 4 回答
- 0 關(guān)注
- 2318 瀏覽
添加回答
舉報
0/150
提交
取消