沒錯這一篇看標題就知道,這一回我們要再次講解到 Go 的 float,為什麼要在講解呢? 因為我相信大家對於上一篇小考的 float 題目感到非常疑惑吧,為什麼程式題第二題的答案會是這麼奇怪的數字呢?
話不多說,關於 float 的問題要講到這個就得先來說說 Go 的 float 的浮點數運算標準 ==IEEE 754==
IEEE 754 也可以稱為是 ==二進位浮點數算術標準==,是20世紀以來最廣泛使用的浮點數運算標準,那 IEEE 754 規範四種浮點數的方式 :
為什麼那題答案會是 12345.988 呢,其實照理來說應該是 12345.987,會變成這樣是因為 Go語言 的 float 自動把值給四捨五入了,所以 12345.9876 取小數點後三位數的 7 那它下一位的數字是 6 所以 Go語言就把四捨五入的方式把 7 變成 8。
簡單來說,例如以下這些數字我要取小數點後三位,它們就會變成以下:
1234.5678 -> 1234.568
42.3010 -> 42.301
77780.3214 -> 77780.321
9018.2018 -> 9018.202
1234.9875 -> 1234.987
經過以上的論述相信大家多多少少都有點概念,