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

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

在Objective-C中出現浮動問題

在Objective-C中出現浮動問題

瀟瀟雨雨 2019-11-04 14:04:45
我有一個小問題,我找不到解決方案!我的代碼是(這只是一個示例代碼,但是我的原始代碼做了這樣的事情):float x = [@"2.45" floatValue];for(int i=0; i<100; i++)    x += 0.22;NSLog(@"%f", x);輸出是52.450001而不是52.450000!我不知道,因為這會發生!謝謝你的幫助!?解決了?謝謝大家!是的,我已經解決了雙重類型!
查看完整描述

3 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

浮點數是具有一定精度的數字表示形式。并非每個值都可以用這種格式表示。也請參見這里。


您可以輕松想到為什么會這樣:僅在間隔(1..1)中有無限數量的數字,但是浮點數僅具有有限的位數來表示(-MAXFLOAT .. MAXFLOAT)。


更恰當地說:在32位整數表示中,要表示的整數個數是可數的,但是有無限數量的實數值,不能在32位或64位的有限表示中完全表示。因此,不僅最高和最低可表示的實際值受到限制,而且準確性也受到限制。


那么,為什么浮點數后的數字很少會受到影響?因為表示形式是基于二進制而不是十進制,所以使其他數字比十進制數字更容易表示。


查看完整回答
反對 回復 2019-11-04
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

浮點數不能始終由計算機輕松表示。這導致某些數字不準確。

就像我問你十進制的1/3是多少。無論您多么努力,您都無法告訴我它是什么,因為十進制無法準確地描述該數字。

浮點數無法準確描述一些十進制數字。


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 472 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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