@@ -103,7 +103,7 @@ alert( num.toString(2) ); // 11111111
103
103
` ` ` warn header="メソッドを呼ぶための2つのドット"
104
104
` 123456. .toString (36 )` の2つのドットはタイプミスではないことに注意してください。上の例の ` toString` のように、数値に対して直接メソッド呼び出しをしたいとき、その後に2つのドット ` ..` を置く必要があります。
105
105
106
- もし1つのドットを置いた場合 ` 123456 .toString (36 )` 、エラーになるでしょう。なぜならJavaScript構文は最初のドットの後を少数部分と考えるためです 。そして、もう1つドットを置くと、JavaScriptは少数部分が空であることを知り 、メソッドと判断します。
106
+ もし1つのドットを置いた場合 ` 123456 .toString (36 )` 、エラーになるでしょう。なぜならJavaScript構文は最初のドットの後を小数部分と考えるためです 。そして、もう1つドットを置くと、JavaScriptは小数部分が空であることを知り 、メソッドと判断します。
107
107
108
108
109
109
また、このように書くこともできます ` (123456 ).toString (36 )` .
@@ -137,15 +137,15 @@ alert( num.toString(2) ); // 11111111
137
137
| ` -1.6` | ` -2` | ` -1` | ` -2` | ` -1` |
138
138
139
139
140
- これらの関数は、数値の小数点の扱い方の全ての可能性をカバーしています。しかし、少数の後の数値を ` n-th` (n桁) に丸めたいときはどうすればよいでしょうか。
140
+ これらの関数は、数値の小数点の扱い方の全ての可能性をカバーしています。しかし、小数の後の数値を ` n-th` (n桁) に丸めたいときはどうすればよいでしょうか。
141
141
142
142
例えば、` 1.2345` という数値があり、` 1.23` のみを取り出すような、2 桁に丸めたい場合です。
143
143
144
144
それをするために2 つの方法があります:
145
145
146
146
1. 乗除算
147
147
148
- 例えば、少数第 2 位で数値を丸めるために 、 数値を ` 100` で乗算し、丸め関数を呼び出した後、それを除算します。
148
+ 例えば、小数第 2 位で数値を丸めるために 、 数値を ` 100` で乗算し、丸め関数を呼び出した後、それを除算します。
149
149
` ` ` js run
150
150
let num = 1.23456;
151
151
@@ -166,7 +166,7 @@ alert( num.toString(2) ); // 11111111
166
166
alert( num.toFixed(1) ); // "12.4"
167
167
` ` `
168
168
169
- ` toFixed` の結果は文字列であることに注意してください。もし少数部分が指定桁より短い場合 、末尾にゼロが挿入されます。
169
+ ` toFixed` の結果は文字列であることに注意してください。もし小数部分が指定桁より短い場合 、末尾にゼロが挿入されます。
170
170
:
171
171
172
172
` ` ` js run
@@ -206,13 +206,13 @@ alert( 0.1 + 0.2 ); // 0.30000000000000004
206
206
207
207
しかし、なぜこのようなことが起こるのでしょうか?
208
208
209
- 数値はバイナリ形式で、1 と0 の並びでメモリ上に格納されます。しかし10 進数でシンプルに見える ` 0.1` 、` 0.2` のような少数は、バイナリ形式では終わることのない少数です 。
209
+ 数値はバイナリ形式で、1 と0 の並びでメモリ上に格納されます。しかし10 進数でシンプルに見える ` 0.1` 、` 0.2` のような小数は、バイナリ形式では終わることのない小数です 。
210
210
211
- 言い換えると、` 0.1` とは何でしょう?それは 1 を 10 で割った ` 1/10` です。10 進数では、このような数値は簡単に表現できます。 それと ` 1/3` を比較してみてください。これは無限の少数 ` 0.33333(3)` になります。
211
+ 言い換えると、` 0.1` とは何でしょう?それは 1 を 10 で割った ` 1/10` です。10 進数では、このような数値は簡単に表現できます。 それと ` 1/3` を比較してみてください。これは無限の小数 ` 0.33333(3)` になります。
212
212
213
213
従って、` 10` の累乗による除算は 10 進数では上手く動作することが保証されますが、` 3` による除算は保証されていません。同じ理由で、2 進数では、` 2` の累乗による除算は動作することが保証されていますが、 ` 1/10` は無限の2 進数の小数になります。
214
214
215
- 2 進数を使って、 * 正確な 0.1 * または * 正確な 0.2 * を格納する方法はありません。ちょうど、10 進数で 1 / 3 を少数で正確に表現できないように 。
215
+ 2 進数を使って、 * 正確な 0.1 * または * 正確な 0.2 * を格納する方法はありません。ちょうど、10 進数で 1 / 3 を小数で正確に表現できないように 。
216
216
217
217
数値形式 IEEE - 754 は、可能な限り近い数値に丸めてこれを解決します。 これらの丸めルールでは、通常 " 小さな精度損失" は見ることができないので、数値は ` 0.3` と表示されます。 しかし、損失は依然として存在することに注意してください。
218
218
@@ -255,7 +255,7 @@ PHP, Java, C, Perl, Ruby は全く同じ結果を返します。なぜならそ
255
255
256
256
` 0.1 * 10 = 1` と ` 0.2 * 10 = 2` をするとき、両方の数値は整数になり、精度損失がなくなるため、これは正しく動作します。
257
257
258
- 3. もしもショップを扱っている場合、最も抜本的な解決策はセントで全ての価格を格納し、全く少数を使わないことです 。しかし、30 % のディスカウントを適用するとどうなるでしょうか?実際には、完全に回避することはほぼ不可能なので、上記の解決法はこの落とし穴を回避するのに役立ちます。
258
+ 3. もしもショップを扱っている場合、最も抜本的な解決策はセントで全ての価格を格納し、全く小数を使わないことです 。しかし、30 % のディスカウントを適用するとどうなるでしょうか?実際には、完全に回避することはほぼ不可能なので、上記の解決法はこの落とし穴を回避するのに役立ちます。
259
259
260
260
` ` ` ` smart header= " 興味深いこと"
261
261
これを試してみてください:
0 commit comments