溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的

發(fā)布時間:2021-09-30 10:02:17 來源:億速云 閱讀:121 作者:柒染 欄目:互聯(lián)網(wǎng)科技

本篇文章給大家分享的是有關(guān)JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

在編寫JavaScript策略時,由于腳本語言自身的一些問題,經(jīng)常導(dǎo)致計算時數(shù)值精確度問題。對于程序中一些計算、邏輯判斷有一定影響。例如,在計算1 - 0.8或者0.33 * 1.1時,會計算出有誤差的數(shù)據(jù):

JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的

JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的

那么如何解決此類問題呢?問題根源在于:浮點(diǎn)數(shù)值的最高進(jìn)度是17位小數(shù),但在進(jìn)行運(yùn)算的時候其精確度卻遠(yuǎn)遠(yuǎn)不如整數(shù);整數(shù)在進(jìn)行運(yùn)算的時候都會轉(zhuǎn)成10進(jìn)制; 而Java和JavaScript中計算小數(shù)運(yùn)算時,都會先將十進(jìn)制的小數(shù)換算到對應(yīng)的二進(jìn)制,一部分小數(shù)并不能完整的換算為二進(jìn)制,這里就出現(xiàn)了第一次的誤差。待小數(shù)都換算為二進(jìn)制后,再進(jìn)行二進(jìn)制間的運(yùn)算,得到二進(jìn)制結(jié)果。然后再將二進(jìn)制結(jié)果換算為十進(jìn)制,這里通常會出現(xiàn)第二次的誤差。

為了解決這個問題,在網(wǎng)上搜索了一些解決方案,經(jīng)過測試使用,如下方案比較好的解決了這個問題:

JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的

JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的

究其原理,是把要做運(yùn)算的兩個操作數(shù)轉(zhuǎn)換為整數(shù)去計算避免精度問題,在計算后(根據(jù)轉(zhuǎn)換為整數(shù)時的放大倍數(shù))對計算結(jié)果運(yùn)算還原,得出準(zhǔn)確結(jié)果。這樣當(dāng)我們想讓程序在盤口價格加一跳最小價格精度的時候掛單,就不用擔(dān)心數(shù)值精度問題了

JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的

以上就是JavaScript策略設(shè)計時數(shù)值計算精度問題的解決方案是怎樣的,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI