回答編集履歴
2
typo
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で表現する処理系が多い
|
|
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
リンク追加
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の
|
|
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 ...`が切り捨てられます。
|