亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于PHP浮點數精度問題

關于PHP浮點數精度問題

千萬里不及你 2019-04-16 20:25:51
PHPmanual中說:以十進制能夠精確表示的有理數如0.1或0.7,無論有多少尾數都不能被內部所使用的二進制精確表示,因此不能在不丟失一點點精度的情況下轉換為二進制的格式。//example1$float=(0.1+0.7)*10;echo(integer)$float;//7echofloor($float);//7//example2echo(integer)(1.5+1.5);//3echofloor(1.5+1.5);//3//example3echo(integer)(0.5*10);//5echofloor(0.5*10);//5為什么在例子2和例子3中,浮點數的加和乘運算能夠保全精度呢?
查看完整描述

2 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

又是獻上我博客的時候了:
代碼之謎(四)-浮點數(從驚訝到思考)
代碼之謎(五)-浮點數(誰偷了你的精度?)
0.1+0.7的結果是0.7999999999999999
0.51.5可以用浮點數精確的表示。
0.1的二進制:
符號位0
指數01111011(-4)
位數1.10011001100110011001101(1.60000002384185791015625)
將這個數在轉回十進制:0.10000000149011612
0.7的二進制:
符號位0
指數01111110(-1)
位數1.01100110011001100110011(1.39999997615814208984375)
將這個數在轉回十進制:0.699999988079071
                            
查看完整回答
反對 回復 2019-04-16
?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

先去百度一下浮點數用二進制是怎么表示的,就明白為什么有些浮點數用二進制表示的話為什么總是小于實際的浮點數,有些浮點數的二進制是正確。比如:0.7實際二進制表示的是0.69999999999999996,而0.5的二進制還是二進制,
                            
查看完整回答
反對 回復 2019-04-16
  • 2 回答
  • 0 關注
  • 343 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號