0Pricing
Swift Academy · レッスン

明示的な数値変換

エラーを避けるため、数値型を意図的に変換します。

「明示的な数値変換」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

Swift では明示的な変換が必要

Swiftは数値型の間で自動的に変換しません。IntとDoubleを組み合わせるには、どちらか一方を明示的に変換する必要があります。

let count = 3
let price = 2.5
let total = Double(count) * price
print(total)

暗黙的な変換がない理由

暗黙的な変換では、データが知らないうちに失われたり、意味が変わったりする可能性があります。Swiftでは意図を明示するため、見つけにくいバグを防げます。

let whole = 7
let fraction = 0.5
let result = Double(whole) + fraction
print(result)

Int から Double への変換

整数をDouble(...)でラップすると、浮動小数点数として扱えます。実数除算を行う前にこの変換が必要です。

let a = 7
let b = 2
let ratio = Double(a) / Double(b)
print(ratio)

Double から Int への変換

Doubleに対してInt(...)を使うと、丸めるのではなく小数部分を捨て、0の方向に切り捨てます。

let value = 3.99
print(Int(value))
print(Int(-3.99))

変換前に丸める

切り捨てではなく丸めを行いたい場合は、先に.rounded()を呼び出してからIntに変換します。

let value = 3.6
let rounded = Int(value.rounded())
print(rounded)

整数型間の変換

整数型同士の場合でも、Int(small)やInt8(big)のように明示的な変換が必要です。型によって扱える範囲が異なるためです。

let small: Int8 = 100
let big: Int = Int(small)
print(big + 1000)

オーバーフローする変換

変換先の型に収まらない値を変換すると、実行時にトラップが発生します。収まるかどうかわからない場合は、先に範囲を検証してください。

let n = 200
if n <= Int(Int8.max) {
    print("fits")
} else {
    print("would overflow Int8")
}

失敗可能な数値イニシャライザ

一部の変換では、Int8(exactly:)のような失敗可能なイニシャライザを使います。これはオプショナルを返し、値が正確に収まらない場合はnilを返します。

let ok = Int8(exactly: 100)
let bad = Int8(exactly: 300)
print(ok as Any)
print(bad as Any)

String から数値への変換

Stringから数値への変換も明示的に行い、失敗する可能性があります。文字列が有効な数値でない場合に備えて、オプショナルが返されます。

let text = "42"
if let n = Int(text) {
    print("Parsed:", n)
}
print(Int("hello") as Any)

異なる数値型を組み合わせた計算

典型的なパターンは、すべてのオペランドを共通の型に変換して計算し、必要に応じて最終結果を元の型に戻すことです。

let items = 5
let pricePerItem = 1.99
let total = Double(items) * pricePerItem
let rounded = (total * 100).rounded() / 100
print("Total:", rounded)

変換によるコードの安全性

明示的な変換によって精度が変わる箇所が明確になるため、数値を扱うコードを確認しやすくなり、動作も推測しやすくなります。

let measured = 9.81
let asInt = Int(measured)
let backToDouble = Double(asInt)
print(measured, asInt, backToDouble)

確認問題

DoubleをIntに変換した結果を予測してください。

復習:明示的な数値変換

Swiftでは数値型が暗黙的に変換されないこと、Int(...)はDoubleを切り捨てる一方でDouble(...)はIntを拡張すること、そしてInt8(exactly:)やInt("text")のような失敗可能なイニシャライザは、変換できない場合にオプショナルを返すことを学びました。

let pieces = 7
let share = Double(pieces) / 2.0
print("Share:", share)
print("Truncated:", Int(share))

よくある質問

「明示的な数値変換」レッスンは無料ですか?

はい。「明示的な数値変換」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「明示的な数値変換」で何を学びますか?

エラーを避けるため、数値型を意図的に変換します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「明示的な数値変換」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 整数型とその範囲
  2. 浮動小数点数:DoubleとFloatの違い
  3. 明示的な数値変換
  4. 数値リテラルとアンダースコア
← Swift Academyに戻る