質問するログイン新規登録

回答編集履歴

2

typo

2017/03/09 07:16

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  0.1は[2進数に変換](https://note.cman.jp/convert/bit/)すると、循環小数になってしまいます。
6
6
  `0 . 0001 1001 1001 1001 1001 1001 ...`
7
- C/C++のdoubleは[IEEE754](https://ja.wikipedia.org/wiki/IEEE_754)のbinary64で表現する処理系が多いため、仮数部は53ビットあります。
7
+ C/C++のdoubleは[IEEE754](https://ja.wikipedia.org/wiki/IEEE_754)のbinary64で表現する処理系が多いですがその場合 仮数部は53ビットあります。
8
8
  `1 . 1001 1001 1001 1001 1001 ...`
9
9
  という感じで表現されます。
10
10
  53%4は3なので最後の`1001`のセットの`10`までで有効桁が終わり、その次が`0`ですから、四捨五入(零捨一入)され`01 1001 ...`が切り捨てられます。

1

リンク追加

2017/03/09 07:15

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  0.1は[2進数に変換](https://note.cman.jp/convert/bit/)すると、循環小数になってしまいます。
6
6
  `0 . 0001 1001 1001 1001 1001 1001 ...`
7
- C/C++のdoubleはIEEE754のBinary64で表現する処理系が多いため、仮数部は53ビットあります。
7
+ C/C++のdoubleは[IEEE754](https://ja.wikipedia.org/wiki/IEEE_754)binary64で表現する処理系が多いため、仮数部は53ビットあります。
8
8
  `1 . 1001 1001 1001 1001 1001 ...`
9
9
  という感じで表現されます。
10
10
  53%4は3なので最後の`1001`のセットの`10`までで有効桁が終わり、その次が`0`ですから、四捨五入(零捨一入)され`01 1001 ...`が切り捨てられます。