Skip to content

Update translation of 1-js/05-data-types/02-number, 07-map-set/article.md etc. #713

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Apr 7, 2020
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Update solution.md
  • Loading branch information
leviding authored Apr 7, 2020
commit 978bc0d77cc8e587835c5d6fb2949ae1cc677da2
15 changes: 8 additions & 7 deletions 1-js/05-data-types/02-number/2-why-rounded-down/solution.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
`6.35` 内部,小数部分是一个无限的二进制。在这种情况下,它存储的时候有一个精度的缺失
在内部,`6.35` 的小数部分是一个无限的二进制。在这种情况下,它的存储会造成精度损失

让我们来看看:

```js run
alert( 6.35.toFixed(20) ); // 6.34999999999999964473
```

精度缺失可能会导致数字的增加和减小。在这种特殊情况下,数字可能会变小了一点,这就是为什么它减小了
精度损失可能会导致数字的增加和减小。在这种特殊的情况下,数字变小了一点,这就是它向下舍入的原因

那么 `1.35` 是怎样的呢
那么 `1.35` 会怎样呢

```js run
alert( 1.35.toFixed(20) ); // 1.35000000000000008882
```

在这里,精度缺失使得这个数字更大一些,所以这个数字变大了一些
在这里,精度损失使得这个数字稍微大了一些,因此其向上舍入

**如果我们希望以正确的方式四舍五入,我们如何使用 `6.35` 为例来解决这个问题?**
**如果我们希望以正确的方式进行舍入,我们应该如何解决 `6.35` 的舍入问题呢?**

在四舍五入之前,我们应该把它接近整数
在进行舍入前,我们应该使其更接近整数

```js run
alert( (6.35 * 10).toFixed(20) ); // 63.50000000000000000000
```

请注意 `63.5` 完全没有精度缺失。这是因为小数部分 `0.5` 实际上是 `1 / 2`。除以2的幂的分数在二进制系统中被精确地表示,现在我们可以围绕它来解决问题
请注意`63.5` 完全没有精度损失。这是因为小数部分 `0.5` 实际上是 `1/2`。以 2 的整数次幂为分母的小数在二进制数字系统中可以被精确地表示,现在我们可以对它进行舍入


```js run
alert( Math.round(6.35 * 10) / 10); // 6.35 -> 63.5 -> 64(rounded) -> 6.4
```