You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Como podemos dizer no código acima, a função com um `*` teria a execução da função `next`. Em outras palavras, a execução de função retorna um objeto. Toda chamada a função `next` pode continuar a execução do código pausado. Um simples implementação da função Generator é mostrada abaixo:
1019
1019
```js
1020
-
// cb is the compiled 'test' function
1021
1020
// cb é a função 'test' compilada
1022
1021
functiongenerator(cb) {
1023
1022
return (function() {
@@ -1334,12 +1333,10 @@ p.a // -> obtém 'a' = 2
1334
1333
1335
1334
# Por que 0.1 + 0.2 != 0.3
1336
1335
1337
-
Porque JS usa o precisão-dupla do IEEE 754 versão (64-bit). Toda linguagem que usa esse padrão tem esse problema.
1336
+
Porque JS usa a precisão-dupla do IEEE 754 versão (64-bit). Toda linguagem que usa esse padrão tem esse problema.
1338
1337
1339
1338
Como nós sabemos, computadores usam binários para representar decimais, então `0.1` em binário é representado como
1340
1339
1341
-
As we know, computers use binaries to represent decimals, so `0.1` in binary is represented as
1342
-
1343
1340
```js
1344
1341
// (0011) representa o ciclo
1345
1342
0.1=2^-4*1.10011(0011)
@@ -1349,57 +1346,55 @@ Como nós chegamos a esse número binário? Podemos tentar computar ele como aba
Computações binária em números flutuantes são diferentes daqueles em inteiros. Por multiplicação, apenas bits flutuants são computados, enquanto bits do tipo inteiro são usados pelos binários para cada bit. Então o primeiro bit é usado como o bit mais significante. Assim sendo nós obtemos 0.1 = 2^-4 * 1.10011(0011)`.
1349
+
Computações binária em números flutuantes são diferentes daqueles em inteiros. Por multiplicação, apenas bits flutuantes são computados, enquanto bits do tipo inteiro são usados pelos binários para cada bit. Então o primeiro bit é usado como o bit mais significante. Assim sendo nós obtemos 0.1 = 2^-4 * 1.10011(0011)`.
1353
1350
1354
1351
`0.2` é similar. Nós apenas precisamos passear na primeira multiplicação e obter `0.2 = 2^-3 * 1.10011(0011)`
1355
1352
1356
-
Voltando a precisão dupla pelo padrão IEE754. Entre o 64 bits, um bit é usado
1357
-
1358
-
Back to the double float forIEEE754standard. Among the 64 bits, one bit is used for signing, 11 used for integer bits, and the rest 52 bits are floats. Since`0.1` and `0.2` are infinitely cycling binaries, the last bit of the floats needs to indicate whether to round (same as rounding in decimals).
1353
+
Voltando a precisão dupla pelo padrão IEE754. Entre o 64 bits, um bit é usado para assinatura, 11 é usado para bits inteiros, e o outros 52 bits são floats. Uma vez que `0.1` e `0.2` são ciclos infinitos de binários, o último bit do float precisa indicar se volta (mesmo como o arredendomaneto em decimal).
1359
1354
1360
-
After rounding, `2^-4 * 1.10011...001`becomes `2^-4 * 1.10011(0011 * 12 times)010`. After adding these two binaries we get`2^-2 * 1.0011(0011 * 11 times)0100`, which is`0.30000000000000004`in decimals.
1355
+
Depois do arredondamento, `2^-4 * 1.10011...001`se torna `2^-4 * 1.10011(0011 * 12 vezes)010`. Depois de adicionado esses dois binários obtemos`2^-2 * 1.0011(0011 * 11 vezes)0100`, que é`0.30000000000000004`em decimal.
1361
1356
1362
-
The native solution to this problem is shown below:
1357
+
A solução nativa pra esse problema é mostrado abaixo:
0 commit comments