---
# System prepended metadata

title: CS50 x 2021 week 1 延伸資訊
tags: [CS50]

---

---
tags: CS50
---
# CS50 x 2021 week 1 延伸資訊
## Memory, imprecision, and overflow


### Floating Point Imprecision 
```javascript
0.1 + 0.2 === 0.3 // false
```
這個是大部分程式語言都會遇到的事情，因為就算是小數，最後也是轉換為二進位做運算。
電腦使用的浮點數都是遵循 [IEEE 754](https://zh.wikipedia.org/wiki/IEEE_754) 標準
算是電腦的先天缺陷，沒辦法直接解決，以下列出幾種看過的 workaround：
1. 使用乘法轉換為整數後再計算，計算完再轉換回來
2. 其他語言特定的方法(以下用 JS 舉例)
    1. 使用 toFixed 方法，或是 toPrecision 方法
    2. 使用 math.js 套件

### Overflow
就算 C 語言的 long long 可以儲存到 9,223,372,036,854,775,807，但是能儲存的量還是有限，因此不能完全保證不會有溢位的情形發生。
為了因應這個情況做的數字運算稱為**大數運算**。