php - 問(wèn)個(gè)類型轉(zhuǎn)化的問(wèn)題,float類型轉(zhuǎn)int,覺(jué)得可能會(huì)出問(wèn)題,但結(jié)果并沒(méi)有?
問(wèn)題描述
譬如把float類型的2.0000000000轉(zhuǎn)化為int,底層存儲(chǔ)的應(yīng)該是1.999999999999999這樣的吧,有精度限制的,所以當(dāng)我把這個(gè)數(shù)轉(zhuǎn)int的時(shí)候,覺(jué)得會(huì)變成1(丟棄小數(shù)部分了)但測(cè)試了幾個(gè)語(yǔ)言,都還是正確的(php,java,go,js)php:js:
go:
java:
問(wèn)題解答
回答1:2.0是可以被浮點(diǎn)數(shù)精確表達(dá)的 這個(gè)數(shù)不應(yīng)該出問(wèn)題
回答2:小數(shù)的存儲(chǔ)用科學(xué)記數(shù)法存儲(chǔ),并不是1.999999...,在強(qiáng)轉(zhuǎn)的過(guò)程中是做處理的,不是直接轉(zhuǎn)換個(gè)類型
回答3:一般來(lái)說(shuō)都是低精度轉(zhuǎn)高精度,比如int->float,高精度轉(zhuǎn)低精度,是要丟失精度,數(shù)據(jù)結(jié)果可能會(huì)變得很詫異的。
回答4:幾個(gè)經(jīng)典的例子
(int)(0.57 * 100)
(int)((0.1+0.7)*10)
回答5:沒(méi)啥太實(shí)際的意義,假如真的是你這樣想的情況運(yùn)作的話,設(shè)計(jì)這門語(yǔ)言的人肯定會(huì)考慮到的
具體了解需要一定的匯編原理,所以不要太鉆牛角尖啦
回答6:可以問(wèn)一下,你這個(gè)編程面板是哪里下載的嗎?好像不錯(cuò)呀
