笨蛋!連0.2這么簡單的數(shù)字都搞不定!你被炒了!








后記:
計(jì)算機(jī)的本質(zhì)決定了它是一個二進(jìn)制的世界,人類熟悉的十進(jìn)制數(shù)字需要轉(zhuǎn)行成二進(jìn)制才能被計(jì)算機(jī)處理。但是這個轉(zhuǎn)化的過程卻會遇到問題。從漫畫中可以看出十進(jìn)制整數(shù)都能精確地轉(zhuǎn)化為二進(jìn)制表示,但是十進(jìn)制小數(shù)卻并不一定。你可以用你熟悉的編程語言如Java、Python, JavaScript快速地重現(xiàn)這一現(xiàn)象。
對于工程計(jì)算和科學(xué)計(jì)算,一個非常近似的二進(jìn)制小數(shù)是可以滿足要求的,但是在商業(yè)計(jì)算尤其是金融領(lǐng)域,必須要精確地表示,精確地計(jì)算,這個時候就不能直接使用float,double等類型了,需要用一個工具類如BigDecimal來進(jìn)行處理。
值得注意的是,國際上對浮點(diǎn)數(shù)的存儲制定了規(guī)范,即IEEE 754, 這個存儲格式略為復(fù)雜,但其不能精確表示十進(jìn)制小數(shù)的本質(zhì)是不變的。
如需轉(zhuǎn)載,請通過作者微信公眾號coderising獲取授權(quán)。