回答編集履歴

2

追記

2016/07/09 17:21

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -13,3 +13,7 @@
13
13
  その値から、高々123456789.0を引いても、小数点の上971ビット目は1ですので切り上られて元に戻ってしまいます。
14
14
 
15
15
 
16
+
17
+ 小さな10進数の値で考えると分かりやすいです。
18
+
19
+ 50,000から100引くと49,900となります。この1,000の桁を四捨五入したら50,000に戻るという現象です。

1

typo

2016/07/09 17:21

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -8,6 +8,8 @@
8
8
 
9
9
  DBL_MAXは 1.11111...(52ビット) * 2^1023 です。
10
10
 
11
- 52ビットを1023ビット左シフトすることにので、小数点の上に1023-52=971ビットの0が続きます。
11
+ 小数点直下から52ビット連続の1を1023ビット左シフトした値なので、結果は小数点の上に1023-52=971ビットの0が続きます。
12
12
 
13
- その値から、高々123456789.0を引いても、小数点の上971ビット目を四捨五入ので切り上られて元に戻ってしまいます。
13
+ その値から、高々123456789.0を引いても、小数点の上971ビット目は1ですので切り上られて元に戻ってしまいます。
14
+
15
+