日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 小数运算 少0.1_计算器是如何实现0.1的?

發(fā)布時間:2024/9/27 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 小数运算 少0.1_计算器是如何实现0.1的? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我都沒注意計算器用的是定點數(shù),給題主一個贊。

這個問題簡單來說這就是浮點數(shù)和定點數(shù)的區(qū)別。

浮點數(shù)

優(yōu)點:能夠用統(tǒng)一的方法,表示范圍變化非常大的數(shù)字,以float標準來說,32個bit就可以表示從10的負100多次方到10的正100多次方這么大范圍。

缺點:浮點誤差問題,無法精確表示某些小數(shù)。特性類似科學計數(shù)法,只能表示“有限個有效數(shù)字”。

不知是優(yōu)點還是缺點:現(xiàn)代CPU集成了FPU,FPU是專門給浮點運算加速的協(xié)處理器。因為有了它,現(xiàn)代CPU計算浮點數(shù)是非常快的。

定點數(shù)

優(yōu)點:能精確表示取值范圍內(nèi)的任意數(shù)字。

缺點,占用同樣bit數(shù)時表示的范圍很小。

浮點數(shù)肯定是主流,但是它使用時有一些注意事項,而且在某些場景下也會被特意換成定點數(shù)。

舉例一:初學者都要學習判斷兩個小數(shù)是否相等的方法,但是有時候會忘記:

// a和b都是float類型,判斷二者是否相等用

if ( Abs(a-b) < EPSILON )

{

......

}

// 其中EPSILON是一個很小的數(shù),根據(jù)不同場景取0.000001或0.0001等

舉例二:除了以上最基本的用法,浮點數(shù)在圖像縮放等情景下也存在取整精度問題。之前認識一位大牛想改進UI縮放的效果,將浮點數(shù)全部改成了自定義的32位定點數(shù),16位表示整數(shù),16位表示小數(shù)。再配合改進過的算法,縮放誤差問題迎刃而解。

舉例三:由于王者農(nóng)藥的流行,現(xiàn)在“幀同步算法”在實時網(wǎng)絡游戲中也倍受關(guān)注。幀同步算法要求輸入一致時輸出嚴格一致,飄忽不定的浮點數(shù)在這種場景下不受歡迎。所以也會用到定點數(shù),確保運算時沒有誤差。

具體使用時,如果需要用定點數(shù),既可以使用第三方的定點數(shù)程序庫,也可以自己封裝一個適合某個特定軟件的定點數(shù)類型。

比如C#提供的Decimal可以提供和計算器一樣的精確表示,python定點數(shù)的庫名字也叫decimal

總結(jié)

以上是生活随笔為你收集整理的java 小数运算 少0.1_计算器是如何实现0.1的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。