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








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