DEV Community

Too Leng
Too Leng

Posted on

【ChaoCode】 Swift 基礎篇 3:數字類型作業

四種數字類型的使用時機
需要整數時,優先使用 Int。
需要非負整數時,使用 UInt。
需要浮點數時,優先使用 Double,除非有特殊原因需要節省記憶體空間才考慮 Float。
money->decimal

如何判斷各個類型可以儲存的數字
在Swift中,數值類型有多種,主要包括 Int、Float、Double 和 Decimal。每一種數據類型的儲存範圍和精度都有其限制。一般來說,數值類型的範圍和精度由它們所佔的內存位數來決定。
為什麼二進位的 0.1 + 0.2 不等於 0.3
這是由於浮點數的表示方式和精度所導致的問題。浮點數在計算機中是以二進制形式存儲的,而某些十進制的小數在二進制中無法精確表示。例如,0.1 和 0.2 在二進制中無法完全精確表示,因此它們在計算時會有微小的誤差。
Decimal 的建立方法

let decimal1 = Decimal(0.1)
let decimal2 = Decimal(0.2)
Enter fullscreen mode Exit fullscreen mode

電腦的世界是用什麼進位制?

二進位
儲存與金錢相關的資料時應該用哪種類型?為什麼?
用 Decimal。避免二進位和十進位轉換造成的誤差。
下列敘述紫色部分有一個是錯的,請改成正確的敘述。
第一行是錯的,不是所有十進位可以表達的小數都可以精準的轉換成二進位。
任何十進位可以精準表達的整數都可以精準轉換成二進位數字;
任何二進位可以精準表達的整數和小數都可以精準轉換成十進位數字。
數字 A:12345678901234567
數字 B:12345687890000000000可以精準的被存入 Double 中嗎?
因為 Double 中絕對能安全存放的是 15 個連續的數字,所以數字A(17 個連續數字)不行;數字B(10 個連續數字)可以。

let tB:Decimal=975772
let jB:Decimal=tB * 3.95
print("台幣 \(tB) 元等於日幣 \(jB) 元。")


// 2. 請印出十進位的 90000.23 用 Double 儲存會產生的誤差值。
// 答案可以是正數或負數,只要數字部分正確即可。

let decimal = Decimal(string: "90000.23")!
let doubleToDecimal = Decimal(90000.23)
let difference = decimal - doubleToDecimal

print("90000.23 用 Double 儲存會產生的誤差值為:\(difference)。")


Enter fullscreen mode Exit fullscreen mode

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay