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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

浮点数一些设计原理

發(fā)布時(shí)間:2023/12/6 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浮点数一些设计原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要:本篇文章會(huì)講述浮點(diǎn)數(shù)的設(shè)計(jì)原理,比如如何存儲(chǔ)二進(jìn)制的問(wèn)題,從而幫助我們更好的編碼。

__1. deading code __

console.log(1.0-0.9 == 0.1); //輸出 false console.log(1.0-0.9, 0.1); //輸出 0.09999999999999998 0.1 //所以判斷浮點(diǎn)運(yùn)算結(jié)果前要對(duì)參數(shù)進(jìn)行精度縮小,縮小精度會(huì)四舍五入。 console.log(parseFloat((1.0-0.9).toFixed(10)) == 0.1); //輸出 true console.log(parseFloat((1.0-0.9).toFixed(10)),0.1) //輸出 0.1 0.1 復(fù)制代碼

所以使用 JavaScript 設(shè)計(jì)浮點(diǎn)數(shù)計(jì)算時(shí),要考慮小數(shù)不準(zhǔn)確的問(wèn)題。

2.浮點(diǎn)數(shù)二進(jìn)制存儲(chǔ)

如 32 存儲(chǔ)為例來(lái)講解存儲(chǔ)。

SignExponentMantissa
1bit8bits23bits
  • Sign:表示浮點(diǎn)數(shù)是正數(shù)還是負(fù)數(shù)。__0__表示正數(shù),__1__表示負(fù)數(shù)
  • Exponent:指數(shù)部分。類(lèi)似于科學(xué)技術(shù)法中的M*10^__N__中的 N,要注意規(guī)定 01111111 = 2^0 也就是 0,所以指數(shù)部分可以表達(dá): -128 - 127
  • Mantissa:基數(shù)部分。浮點(diǎn)數(shù)具體數(shù)值的實(shí)際表示。

嘗試把 3.1 轉(zhuǎn)換成二進(jìn)制存儲(chǔ):

  • 是正數(shù)第一位是 0
  • 3 轉(zhuǎn)換成二進(jìn)制 11
  • 0.1 轉(zhuǎn)換成二進(jìn)制,__0.1 __ 轉(zhuǎn)換成 0.0625+0.007825+0.00390625... 即 2^-3+2^-4+2^7....,二進(jìn)制為 .00011001100110011001100 ,是1100無(wú)限循環(huán),保留到23位。(這里確實(shí)有點(diǎn)繞,不理解的單獨(dú)查資料能更快了解。也就是這里導(dǎo)致小數(shù)在計(jì)算機(jī)里的存儲(chǔ)會(huì)不準(zhǔn)確,是一個(gè)近似值。
  • 整數(shù)和小數(shù)合并為 11.0001100110011001100110 , 然后保證小數(shù)點(diǎn)以前只有一位數(shù),1.10001100110011001100110 * 2^1
  • 合并后小數(shù)點(diǎn)前的一位數(shù)是要舍去的,由于我們上一個(gè)步驟,小數(shù)點(diǎn)前的數(shù)字總會(huì)為 1,所以為了減少存儲(chǔ)我們舍去 . 前的為1數(shù)字,最后得 .100011001100110011001100 * 2^1
  • 指數(shù)轉(zhuǎn)換,由上一步得指數(shù)為 __2^1 __,由于規(guī)定 01111111 = 2^0(這樣的目的就是為了,指數(shù)可以為正也可以為負(fù)), 2^110000000 ,合并后得 10000000 10001100110011001100110
  • 添上第一位代表正負(fù) 0 10000000 10001100110011001100110 最終__ 3.1 __被用二進(jìn)制表達(dá)。
  • 其中最重要的部分是小數(shù)轉(zhuǎn)二進(jìn)制,像 0.5、0.25、0.125 這樣的小數(shù)轉(zhuǎn)化二進(jìn)制為 0.1、0.01、0.001 ,但是 0.1、0.2 就不好表示了。如果不理解百度有在線二轉(zhuǎn)十進(jìn)制 地址

    驗(yàn)證的網(wǎng)址:https://www.h-schmidt.net/FloatConverter/IEEE754.html

    3.猜想

    語(yǔ)言還沒(méi)有組織好。

    我的博客:http://liangtongzhuo.com

    轉(zhuǎn)載于:https://juejin.im/post/5a31f1906fb9a04514640e0e

    總結(jié)

    以上是生活随笔為你收集整理的浮点数一些设计原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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