首先我們來看一下下面一段代碼:
站在用戶的角度思考問題,與客戶深入溝通,找到清河網(wǎng)站設(shè)計(jì)與清河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋清河地區(qū)。#include <stdio.h> int main(int argc, char *argv[]) { int i; float sum = 0; for (i = 0; i < 100; i++){ sum += 0.1; } printf("sum = %f \n", sum); return 0; }
在32位ubuntu16.10上的執(zhí)行結(jié)果為:
sum = 10.000002
0.1累加100次,結(jié)果應(yīng)該是10.這里卻多出了0.000002,為什么呢??這主要是與計(jì)算機(jī)中浮點(diǎn)數(shù)計(jì)算方式有關(guān)。
大家知道計(jì)算機(jī)是只認(rèn)識0和1的,也就是所有的運(yùn)算數(shù)值要轉(zhuǎn)化位二進(jìn)制后進(jìn)行運(yùn)算的,而浮點(diǎn)數(shù)轉(zhuǎn)換成二進(jìn)制的小數(shù)上就會(huì)出現(xiàn)問題。首先介紹下十進(jìn)制小數(shù)轉(zhuǎn)化成二進(jìn)制小數(shù)的方法:
將十進(jìn)制的整數(shù)轉(zhuǎn)化為二進(jìn)制時(shí),使用的方法是連續(xù)除2,將余數(shù)從下向上讀,就可以得到二進(jìn)制數(shù);相反將十進(jìn)制的小數(shù)轉(zhuǎn)化為二進(jìn)制小數(shù)時(shí),將小數(shù)部分乘2,直到小數(shù)部分全為0,如將十進(jìn)制0.125轉(zhuǎn)化為二進(jìn)制為0.001:
0 0.125 * 2 = 0.25 (取0.25的整數(shù)部分)
0 0.25 *2 = 0.5 (取0.5的整數(shù)部分)
1 0.5 *2 = 1.0 (取1.0的整數(shù)部分)
然而并不是所有的十進(jìn)制小數(shù)都能轉(zhuǎn)化為二進(jìn)制小數(shù),如十進(jìn)制的0.1:
0 0.1 * 2 = 0.2
0 0.2 * 2 = 0.4
0 0.4 * 2 = 0.8
1 0.8 * 2 = 1.6
1 0.6 * 2 = 1.2
0 0.2 * 2 = 0.4
.
.
.
可以看出將十進(jìn)制的0.1轉(zhuǎn)化為二進(jìn)制是0.0001100011...是個(gè)無限循環(huán)的小數(shù),所以當(dāng)我們進(jìn)行浮點(diǎn)數(shù)進(jìn)行計(jì)算機(jī)運(yùn)算的時(shí)候可能出現(xiàn)錯(cuò)誤。
常見的解決辦法是:
1)對于一些精度要求不高的運(yùn)算可以選擇忽略
2)對于一些要求較高的科學(xué)運(yùn)算,可以先將十進(jìn)制的小數(shù)轉(zhuǎn)化為整數(shù)再進(jìn)行運(yùn)算,因?yàn)橛?jì)算機(jī)對整數(shù)的運(yùn)算的是準(zhǔn)確的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站題目:計(jì)算機(jī)中浮點(diǎn)數(shù)運(yùn)算的問題-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://jinyejixie.com/article28/gppcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、企業(yè)網(wǎng)站制作、微信小程序、軟件開發(fā)、服務(wù)器托管、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)