iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

前言

首先為什麼我會為了 float 而特別開了一站跟大家分享呢? 因為我覺得 float 有一些知識需要跟大家好好分享一下 ! !

float型態介紹

那一定還是會有人有疑惑,不就只是個變數型態嗎? 為什麼需要特別介紹呢? 那首先 Go 的變數型態並不能單純只是輸出 ==float== ,如下圖所示:

package main
import ("fmt")


func main() {
    var num float = 3.14
    fmt.Println(num)
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20230922/20161224ZqUnsGwvok.png
發現它會顯示未定義變數,然後輸出不了,這是為什麼呢? 讓我們先往下看,我接著慢慢分享 float 的知識

float64 跟 float32 的差別在哪?

沒錯 ! 為什麼 float 會輸出不了,那是因為 Go 把 float 改成有兩個狀態,一個是 float64 ,另一個則是 float32,這時你會好奇他們兩者的差異到底差在哪?

float64 是雙精度浮點數,也就是 double,儲存占用 8 個位元 8 * 8 = 64 位,其中 1 位為用來表示符號,11 位用來表示指數,剩下的 52 位表示尾數。

float32 是單精度浮點數,也就是 float 儲存占用 4 個位元,也即4 * 8 = 32 位,其中 1 位用來表示符號,8 位用來表示指數,剩下的 23 位表示尾數,跟雙精度大同小異。

精度該如何比較?

精度取決於尾數的多少,顯而易見雙精度較單精度好很多,雙精度可以精確的顯示出小數點後 15 位的浮點數,而單精度只能精確的顯示出小數點後 6 位的浮點數。

輸出小數點的方式

那在 Go 語言中我們該如何取出小數點後幾位的數字呢? 舉例來說,如果使用以下的程式碼:

package main
import ("fmt")


func main() {
    var num float64 = 3.1415926
    fmt.Println(num)
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20230922/20161224ZStN9t4Ahj.png

它會印出你所打的所有浮點數,那假設今天你想要只取小數點後兩位,應該怎麼做呢? 你可以試試看以下的程式碼:

package main
import ("fmt")


func main() {
    var num float64 = 3.1415926
    fmt.Printf("%.2f",num)
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20230922/20161224bxP39nTpR8.png

神奇吧 ! ! 這是因為我更改了輸出格式,並且多了一個 ("%.2f") 的程式碼,這個程式碼就是在宣告說等等印出來的值是浮點數而且我只取小數點後兩位 !!當然依此類推,取後三位就是 ("%.3f")、取後四位就是 ("%.4f")...

結語&預告

以上就是我想跟大家分享的一些小知識,同時也歡迎大家來熱烈討論~ 下一站要跟大家分享一下一些小小的知識也就是註解,然後會回顧且複習重點以及功課,那就跳到下一站囉~~

下一站~ 第十二站 : 來一趟小小的註解旅行 !!!

資料來源

https://i.pinimg.com/474x/c0/7e/74/c07e74e3cb86f1566baaed864249474a.jpg

https://www.w3schools.com/go/go_float_data_type.php

http://c.biancheng.net/view/14.html

https://www.educative.io/answers/what-is-type-floattype-in-golang


上一篇
Day11-[第十站 : Go 的變數宣告(二)]<GOO~
下一篇
Day13-[第十二站 : Go 來一趟小小的註解旅行 !!! ]<GOO~
系列文
關於我轉生變成 Go 初學者的這檔事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言