数値

数値 の Swift

1個の演習

数値について

数値

Swiftは、数値を整数と浮動小数点数の2つの主要なカテゴリーに分けています。

  • 整数は、0、1、-1、42、-273 のような、小数部分を持たない数値を表します。
  • 浮動小数点数は、0.0、3.14、-1.36969e-10 のような、小数部分を持つ数値を表します。

数値リテラルにアンダースコアを挿入すると、可読性を高めることができます。1_000_000 は 1000000 と同じです。 浮動小数点リテラルは、10進数表記または指数表記で書くことができます。

ほとんどの場合、整数には Int を、浮動小数点数には Double を使います。

let speed: Int = 42                           // Explicit Int
let pi: Double = 3.14                         // Explicit Double
let giga: Double = 1_000_000_000              // Double with readability underscores
let plancksConstant: Double = 6.62607015e-34  // Double in scientific notation

算術演算子

Swiftは、数値計算のための標準的な算術演算子を提供しています。

演算子 説明 例
+ 加算 4 + 6 は 10 になります
- 減算 15 - 10 は 5 になります
* 乗算 2 * 3 は 6 になります
Caution

Swiftは型安全であり、算術演算で異なる数値型を混ぜることはできません。 IntとDoubleを直接足したり掛けたりすることはできません。まず、一方の型をもう一方に合わせて変換する必要があります。

除算

/演算子は除算を行います。 両方のオペランドが整数の場合、整数除算は小数部分を切り捨てます。

5.0 / 2.0 // 2.5 (Double division)
5 / 2     // 2 (integer division truncates the remainder)

ゼロ以外の浮動小数点数をゼロで割ると、inf または -inf になります。 0.0 を 0.0 で割ると、nan(非数)になります。 対照的に、整数をゼロで割ると、コンパイル時または実行時エラーになります。

print(5.0 / 0.0)  // Prints inf
print(-5.0 / 0.0) // Prints -inf
print(0.0 / 0.0)  // Prints nan

// The following line will not compile:
// print(5 / 0) // Error: Division by zero

余り演算子

余り演算子(%)は、2つの整数を割った後の余りを計算します。

5 % 2  // 1
-5 % 2 // -1

// Dividing by zero produces an error:
// 5 % 0 // Error: Division by zero
Note

Swiftでは、%はモジュロ演算子ではなく、真の余り演算子です。 結果は常に、2番目のオペランドの符号に関係なく、最初のオペランド(被除数)の符号を取ります。

5 % -2  // 1
-5 % 2  // -1

浮動小数点数の丸め

浮動小数点数は、rounded()メソッドを使って丸めることができます。 デフォルトでは、rounded()は最も近い整数に丸めます。 また、.upや.downなどの特定の丸め規則を指定することもできます。

let x = 3.14
let y = x.rounded()      // 3.0
let w = x.rounded(.down) // 3.0
let z = x.rounded(.up)   // 4.0

型推論

型注釈なしで数値の定数や変数を宣言すると、Swiftがその型を推論します。

  • 整数はデフォルトで Int になります。
  • 小数点を含む数値はデフォルトで Double になります。
let x = 42         // Inferred as Int
let y = 42.0       // Inferred as Double
let z: Double = 42 // Explicitly typed as Double

型変換

異なる型の値の間で演算を行うには、Double(_:)やInt(_:)などの型イニシャライザを使って、一方の値を変換します。

let integerCount = 42
let floatingCount = Double(integerCount)
print(floatingCount) // Prints 42.0

let pi = 3.14
let integerPi = Int(pi)
print(integerPi) // Prints 3 (fractional part is truncated)
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

数値を学習する