---
# System prepended metadata

title: 四捨六入五成雙(還沒寫完!!)

---

四捨六入五成雙(還沒寫完!!)
===
### 另外一種小數方式(這篇還沒完成)

> <span style="color:red;font-size:26px">前提 : C++的底層設計細節，四捨六入五成雙</span>
> 這是更細節的設計方式

#### 四捨六入五成雙
這是一種更精細的計算方式，其實就是四捨六入，如果是五的話則看五後面有沒有有效數字則進位，否則不進位。下面舉例。

上面使用的方法是 I/O 格式化旗標，其實還有其他的方式，就是引用 iomanip 這個函式庫底下的 setprecision 方法。裡面放的參數代表你要看幾個位數，以下面為例。
```cpp=
    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main(){
        double c = 5.44445;
        
        cout << setprecision(5) << c; //這邊會印出5.4444
    }
```
**今天只單純呼叫 setprecision 函式的時候，這個參數 5 會包括整數位數**，所以只會印出 5.4444，一個整數位數加上四個小數位數，共五位。 **注意:setprecision 會四捨五入哦。**

```cpp=
    double c = 5.444455;
    setprecision(5);
    cout << c; //這邊會印出5.4444
```

那如果今天只想針對小數點後做操作而且要四捨五入，則要加上前面提到的 fixed 格式化旗標，像下面這個例子。


```cpp=
    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main(){
        double c = 5.444445;
        cout.setf(ios::fixed);
        setprecision(5);
        cout << c; //這邊會印出5.44445
    }
```

我們取到小數點後第六位四捨五入進位到小數點後第五位，所以印出 5.44445，這個時候就不管整數位數了。