在對精度要求很高的系統中,或要對小數的運算結果進行比較時,需要特別謹慎
js中的小數運算是精確的嗎?
不一定js中的整數運算是精確的嗎?
不一定js中表示的整數是連續的嗎?
不是,當 js 的數字很大的時候,不再連續
js中表示的最大數字是多少?
最大連續整數:
從1開始數到這個數字一直都是連續的,並且到下乙個數字也是連續的,通過number.max_safe_integer在控制台檢視
js中能表示的數字有效位數是多少?
16~17位
計算機世界中是二進位制,因為計算機是由若干電路構成的,通過電平的高低來表示二進位制
二進位制轉換成十進位制
十進位制轉換為二進位制
整數13···>
//除2取餘13/
2 商 6 餘 16/
2 商 3 餘 03/
2 商 1 餘 11/
2 商 1 餘 1
//餘數從下往上看就是該數對應的二進位制
--1101
小數···>3.25
整數部分一樣--
--結果為11
小數部分
//乘2取整
0.25*2
=0.5 整數部分:0
0.5*2=
1 整數部分:1
整數部分從上往下看
11.01
十進位制的小數,轉換為二進位制後,可能是無限小數,但是計算機對數字的儲存能力有限,因此會丟失一些資料;
比如:
十進位制-
0.3整數部分:0
小數部分:
運算 整數部分
0.3*2=
0.60
0.6*2=
1.21
0.2*2=
0.40
0.4*2=
0.80
0.8*2=
1.61
0.6*2=
1.21
0.2*2=
0.40
...//變數名.tostring(2),將該變數轉換為2進製並展示出來
整數法、浮點數
js中,儲存的所有數字,都按照浮點法存放。
浮點法存放的數字,叫做浮點數(float),浮點數分為單精度和雙精度.
js中,使用雙精度存放浮點數,ieee 754標準.
存放方式
js在計算機中,給每個數字開闢一塊記憶體空間,尺寸固定為64位,哪怕存個1,前面63位補0;
在計算機中,位(bit)是最小的儲存單位,簡稱為bit,1 byte = 8 bit
1 kb = 1024 byte
1 mb = 1024 kb
1 gb = 1024 mb
[第一段][第二段][第三段]
第一段:1位,表示符號位,1負 0正
第二段:11位,表示指數字,這裡的指數是指2為底的指數,而不是10
第三段:52位,表示有效數字
舉例:
0 1000 0000 011 1111 0000 0000 0000...
相當於: 1.1111∗2
1027
−1023
1.1111 * 2 ^
1.1111
∗210
27−1
023
特殊情況
指數為0,同時尾數為0—表示數字0
指數為2047, 尾數為0—表示正無窮
+infinity: 0 1111 1111 111 0000 0000 0000...
符號為1,指數為2047,尾數為0,表示負無窮;
-infinity: 1 1111 1111 111 0000 0000 0000...
指數為2047, 尾數不為0,表示nan
nan : 1 11111111111 011000010000...
乙個正常的數字,指數部分最多是2046
0 1111 1111 110 1111 1111 1111 1111...
相當於:1.11111111...∗2
1023
1.11111111... * 2 ^ 1023
1.1111
1111
...∗
2102
3在console裡面用number.max_value檢視
最小數字用number.min_value檢視
安全數字: 從1開始到該數字,均是連續的整數,並且該數的下乙個整數是存在的.
0 *********xx 11111111...
相當於: 1.11111111...∗2
52
1.11111111... * 2 ^ 52
1.1111
1111
...∗
252
指數為52可以 去掉小數點,所以算出來結果就是最大安全整數:53個連續的1咱們先不忙著算二進位制的53個連續的1是多少,來看一下十進位制裡:
十進位制裡面每一位最大是9,
9 10**1 - 1
99 10**2 - 1
999 10**3 - 1
9999 10**4 - 1
發現規律了沒,所以在二進位制裡面53個連續的1相當於就是2**53 - 1 計算機內部浮點型資料的儲存
c c 浮點數在記憶體中的儲存方式 任何資料在記憶體中都是以二進位制的形式儲存的,例如乙個short型資料1156,其二進位制表示形式為00000100 10000100。則在intel cpu架構的系統中,存放方式為 10000100 低位址單元 00000100 高位址單元 因為intel cp...
計算機內數字的表示
計算機中的數字有三種表示 無符號數 補碼 帶符號數 浮點數 資訊的儲存與定址 計算機中將位元組作為最小可定址單元。而位元組的排列順序分大端法和小端法兩種。大端法就是指將最高位放在最前面的儲存方式,而小端法則是將最低位放在最前面的儲存方式。c語言中的移位運算 帶符號數與無符號數的轉換 帶符號數 無符號...
整數是如何儲存在計算機內部的
整數分為正整數和負整數,因此在存入到計算機時需要考慮到正號負號,接下來就討論整數儲存方式。1.無符號表示法 假設計算機的記憶體分配了n個位來讓我們儲存乙個整數,把這n個位稱為乙個儲存單元,那麼使用無符號表示法可以儲存的整數的範圍是0到 2 n 1 步驟分為以下幾步 首先將整數變為二進位制數 如果二進...