浮動小数点数:DoubleとFloatの違い
DoubleとFloatを使い分け、精度を扱います。
「浮動小数点数:DoubleとFloatの違い」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
浮動小数点型
Swiftには主に2つの浮動小数点型があります。Double(64ビット)とFloat(32ビット)です。これらは小数部分を含む数値を表します。
let d: Double = 3.14159
let f: Float = 3.14159
print(d, f)Doubleがデフォルト
型注釈なしで小数リテラルを書くと、SwiftはDoubleと推論します。DoubleはFloatより高い精度を提供します。
let value = 2.5
print(type(of: value))精度の違い
Doubleは有効数字を約15桁格納しますが、Floatは約6桁または7桁しか格納しません。同じリテラルでも、表示結果が異なる場合があります。
let d: Double = 0.1234567890123456
let f: Float = 0.1234567890123456
print(d)
print(f)pi定数
どちらの型にも.piがあります。Double.piはFloat.piより高精度です。
print(Double.pi)
print(Float.pi)浮動小数点演算
浮動小数点数は、加算、減算、乗算、除算できます。除算では小数の結果が保持されます。
let radius = 2.0
let area = Double.pi * radius * radius
print("Area:", area)丸めメソッド
浮動小数点値には.rounded()があり、.rounded(.down)や.rounded(.up)などのバリエーションも用意されています。
let x = 2.7
print(x.rounded())
print(x.rounded(.down))
print(x.rounded(.up))切り下げ、切り上げ、切り捨て
丸めの規則により、負の無限大方向への切り下げ、正の無限大方向への切り上げ、または0方向への切り捨てを行えます。
let n = -2.3
print(n.rounded(.down))
print(n.rounded(.up))
print(n.rounded(.towardZero))浮動小数点の精度誤差
2進数表現のため、一部の小数は正確に格納できません。0.1 + 0.2は、よく知られているように、正確には0.3になりません。
let sum = 0.1 + 0.2
print(sum)
print(sum == 0.3)浮動小数点数を安全に比較する
完全一致ではなく、浮動小数点数が小さな許容誤差(イプシロン)の範囲内にあるかどうかを比較します。
let sum = 0.1 + 0.2
let close = abs(sum - 0.3) < 0.0001
print("Close enough:", close)特殊な浮動小数点値
浮動小数点型では、infinityとnan(数ではない値)を表現できます。.isInfiniteと.isNaNで確認します。
let inf = Double.infinity
let notNum = Double.nan
print(inf.isInfinite)
print(notNum.isNaN)Double と Float の選択
一般的な数学計算で正確さが必要な場合はDoubleを優先してください。メモリの制約や、グラフィックスなど特定のハードウェアで32ビット値が必要な場合にのみFloatを使用します。
let preciseAvg: Double = (10.0 + 3.0) / 4.0
print(preciseAvg)確認問題
小数リテラルに対してSwiftが推論する型を思い出してください。
復習:Double と Float
Double(64ビット、デフォルト)はFloat(32ビット)より精度が高いこと、どちらも.piと丸めのメソッドを提供すること、そして浮動小数点数の計算は不正確になるため、==ではなく許容誤差を使って比較すべきことを学びました。
let a = 0.1 + 0.2
print("Raw:", a)
print("Rounded:", a.rounded())
print("Within tolerance of 0.3:", abs(a - 0.3) < 1e-9)よくある質問
「浮動小数点数:DoubleとFloatの違い」レッスンは無料ですか?
はい。「浮動小数点数:DoubleとFloatの違い」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「浮動小数点数:DoubleとFloatの違い」で何を学びますか?
DoubleとFloatを使い分け、精度を扱います。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「浮動小数点数:DoubleとFloatの違い」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 整数型とその範囲
- 浮動小数点数:DoubleとFloatの違い
- 明示的な数値変換
- 数値リテラルとアンダースコア