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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

为什么0.1无法被二进制小数精确表示?

發布時間:2024/7/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么0.1无法被二进制小数精确表示? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個問題困擾了我不少時間,最近有個比較清晰的認識,和大家分享。

這個問題首先要從數位表示法說起。今天我們看到的123這樣的十進制數,是自然而然的理解其意義,但是有沒有深究其內在的數學原理呢?

所謂十進制是0~9十個基本符號為基礎的一種數字表示法,數位表示法是將一串基本符號從左到右連續排列的一種方法。為什么12時表示一十二,而不是二十一,或者是一加二的意思呢?因為數字所處的位置是有特別意義的,最右邊第一個數字符號,代表基本的數0~9,而第二位的意義并不是0~9,而是0*10~9*10。推而廣之,百位是x*100,(x是符號),用簡練的數學公式就是x*10^k , 個位k是0,十位是1,百位k是2,從右到左一直數下去。123的意思就是1*10^2+2*10^1+3*10^0。

位置,進制,符號這三者的關系就是“123”這種數字表示法內在的數學原理。

那么,0.1 是什么意思?是1*10^-1,向右數數的結果。小數點是為了區分個位的位置在哪里。

一個數要用“數位表示法”表示出來,必然需要能夠化為x*10^k的形式,而并不是任意數都能夠做到。從數位法小數的定義看可以得知,一個數要能夠被表示出來,需要能除盡10,才有若干個x*10^k 的數位組合表示它,否則就是無數個符號才能表示。如1/3這個數除以10等于1/3*1/10 = 0.0333333….循環小數。

究竟哪些數可以用十進制表示哪些不可以?如分母是10的因子和因子的合數,如1,2,5,10,20,50等(整數分母為1,而任意大于1的數的因子都有1和自身,因此整數可以用任意數制精確表示)。

回答題目,為什么0.1無法被二進制小數表示,0.1即1/10這個數要轉換成二進制即x*2^k的組合數,必須要除盡2.要注意,2進制只有0,1兩個符號,另一個需要注意,二進制被除數右移一位等于*2,而非10進制的*10。

1/10*1/2 = 1/20

1*2*2*2*2 = 32 右移4位

-20 = 12??????? 商1

12*2 = 24 右移1位

-20 = 4?????? 商1

4*2*2*2 =32 右移3位

-20 = 12?? 商1? 可見數字重復了,循環小數無疑

即 0.00011001。

那么2進制能夠表示哪些十進制小數,5/10,因為能約成1/2,分母是2的因子。

總結一點,就是位置表示法有其自身的缺陷,并不能在有限的數位,表示眾多有理數,這個時候,需要借助分數來幫忙,來避免位置表示法以固定數作分母這個缺點。

如果需要一個可以避免循環小數的數制,不妨試用210進制,因為因子比較多,2*3*5*7 =210.

轉載于:https://www.cnblogs.com/Nobel/archive/2013/04/08/3009162.html

總結

以上是生活随笔為你收集整理的为什么0.1无法被二进制小数精确表示?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。