0Pricing
Swift Academy · レッスン

浮動小数点数: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フィードバックを取得できます。ローカル設定は不要です。

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

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