javascript中的float運(yùn)算精度實(shí)例分析_javascript技巧
來源:懂視網(wǎng)
責(zé)編:小采
時(shí)間:2020-11-27 20:54:46
javascript中的float運(yùn)算精度實(shí)例分析_javascript技巧
javascript中的float運(yùn)算精度實(shí)例分析_javascript技巧:有人問到一個(gè)js問題: 代碼如下: var i = 0.07; var r = i*100; alert(r); 結(jié)果為什么是7.0000000000000001 查了下資料,其實(shí)我們知道JavsScript中,變量在存儲(chǔ)時(shí)并不區(qū)分number和float類型,而是統(tǒng)一按float存儲(chǔ)。而javascript
導(dǎo)讀javascript中的float運(yùn)算精度實(shí)例分析_javascript技巧:有人問到一個(gè)js問題: 代碼如下: var i = 0.07; var r = i*100; alert(r); 結(jié)果為什么是7.0000000000000001 查了下資料,其實(shí)我們知道JavsScript中,變量在存儲(chǔ)時(shí)并不區(qū)分number和float類型,而是統(tǒng)一按float存儲(chǔ)。而javascript

有人問到一個(gè)js問題:
代碼如下:
var i = 0.07;
var r = i*100;
alert(r);
結(jié)果為什么是7.0000000000000001?
查了下資料,其實(shí)我們知道JavsScript中,變量在存儲(chǔ)時(shí)并不區(qū)分number和float類型,而是統(tǒng)一按float存儲(chǔ)。而javascript使用IEEE 754-2008 標(biāo)準(zhǔn)定義的64bit浮點(diǎn)格式存儲(chǔ)number,按照IEEE 754的定義: http://en.wikipedia.org/wiki/IEEE_754-2008
decimal64對(duì)應(yīng)的整形部分長(zhǎng)度為10,小數(shù)部分長(zhǎng)度為16,所以默認(rèn)的計(jì)算結(jié)果為“7.0000000000000001”,如最后一個(gè)小數(shù)為0,則取1作為有效數(shù)字標(biāo)志。
類似地,我們可以想像,1/3的結(jié)果應(yīng)該是0.3333333333333333。
那么如何校正這個(gè)值呢?
可以用以下方法:
一、parseInt
var r4=parseInt(i*100);
二、Math.round
var r2=Math.round((i*100)*1000)/1000;
以上兩種方法都可以得到7
附全部測(cè)試代碼:
代碼如下:
測(cè)試腳本 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
javascript中的float運(yùn)算精度實(shí)例分析_javascript技巧
javascript中的float運(yùn)算精度實(shí)例分析_javascript技巧:有人問到一個(gè)js問題: 代碼如下: var i = 0.07; var r = i*100; alert(r); 結(jié)果為什么是7.0000000000000001 查了下資料,其實(shí)我們知道JavsScript中,變量在存儲(chǔ)時(shí)并不區(qū)分number和float類型,而是統(tǒng)一按float存儲(chǔ)。而javascript