[R]剰余を求める
%%演算子を使う。ベクトルでまとめて処理することもできる。
> 6 %% 3
[1] 0
> 7 %% 3
[1] 1
> 8 %% 3
[1] 2
> 9 %% 3
[1] 0
> 0:9 %% 3
[1] 0 1 2 0 1 2 0 1 2 0
%%演算子を使う。ベクトルでまとめて処理することもできる。
> 6 %% 3
[1] 0
> 7 %% 3
[1] 1
> 8 %% 3
[1] 2
> 9 %% 3
[1] 0
> 0:9 %% 3
[1] 0 1 2 0 1 2 0 1 2 0
整数a, b(!= 0)において、a = b q + r (0 <= r < |b|)となる整数q, rがただ一組存在し、このqを、aをbで割ったときの整商という。整商を求めるには%/%演算子を使う。ベクトルでまとめて処理することもできる。
> 4 %/% 3
[1] 1
> 5 %/% 3
[1] 1
> 6 %/% 3
[1] 2
> 7 %/% 3
[1] 2
> 0:9 %/% 3
[1] 0 0 0 1 1 1 2 2 2 3
^演算子を使う。^演算子はベクトルを操作する:演算子より優先順位が高いため、最後の例では、指数の箇所を括弧( )で囲んでいる。
> 10 ^ 2
[1] 100
> 2 ^ 0.5
[1] 1.414214
> 2 ^ (0:8)
[1] 1 2 4 8 16 32 64 128 256
round関数を使う。JIS Z 8401に基づくいわゆる偶数丸めであることに注意。
> d <- c(0.4, 0.5, 0.6, 1.4, 1.5, 1.6)
> for (i in 1:length(d))
+ cat(sprintf("%f -> %f\n", d[i], round(d[i])))
0.400000 -> 0.000000
0.500000 -> 0.000000
0.600000 -> 1.000000
1.400000 -> 1.000000
1.500000 -> 2.000000
1.600000 -> 2.000000
> d <- c(-0.4, -0.5, -0.6, -1.4, -1.5, -1.6)
> for (i in 1:length(d))
+ cat(sprintf("%f -> %f\n", d[i], round(d[i])))
-0.400000 -> -0.000000
-0.500000 -> -0.000000
-0.600000 -> -1.000000
-1.400000 -> -1.000000
-1.500000 -> -2.000000
-1.600000 -> -2.000000
mathモジュールのceil関数を使う。厳密には、引数に与えた数値より大きい最小の整数を返すことに注意。
>>> import math
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.ceil(d)}")
...
0.4 -> 1
0.5 -> 1
0.6 -> 1
1.4 -> 2
1.5 -> 2
1.6 -> 2
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.ceil(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> 0
-1.4 -> -1
-1.5 -> -1
-1.6 -> -1
mathモジュールのtrunc関数を使う。引数に与えた数値の小数点以下を、強制的に切り捨てていると考えればよい。
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.trunc(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 0
1.4 -> 1
1.5 -> 1
1.6 -> 1
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.trunc(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> 0
-1.4 -> -1
-1.5 -> -1
-1.6 -> -1
似たような機能を持つfloor関数もあるが、こちらは小数点以下を強制的に切り捨てているのではなく、引数に与えた数値を超えない最大の整数を返すことに注意。つまり、負数の場合はtrunc関数とfloor関数では動作が異なる。
>>> import math
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.floor(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 0
1.4 -> 1
1.5 -> 1
1.6 -> 1
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.floor(d)}")
...
-0.4 -> -1
-0.5 -> -1
-0.6 -> -1
-1.4 -> -2
-1.5 -> -2
-1.6 -> -2
round関数を使う。JIS Z 8401に基づくいわゆる偶数丸めであることに注意。
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {round(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 1
1.4 -> 1
1.5 -> 2
1.6 -> 2
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {round(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> -1
-1.4 -> -1
-1.5 -> -2
-1.6 -> -2
Access VBA Anaconda C# Excel Excel VBA Fortran gcc gnuplot Java Julia(その他) Microsoft Access Microsoft Excel Octave Open JDK Perl Python Python(Anaconda) Python(インターネット) Python(テキストマイニング) Python(ファイル・ディレクトリの操作) Python(リスト) Python(変数とオブジェクト) Python(実行とデバッグ) Python(数と式) Python(数学) Python(文字と文字列) Python(正規表現) Python(環境) Python(行列) Rの操作 R(ggplot2) R(maptools) R(tidyverse) R(その他) R(インターネット) R(グラフィックス) R(セイバーメトリクス) R(テキストファイルの入出力) R(テキストマイニング) R(データフレーム) R(データベース) R(パッケージ) R(ファイルの入出力) R(ファイル・ディレクトリの操作) R(ベクトル) R(リスト) R(作図) R(地理空間情報) R(変数とオブジェクト) R(数と式) R(数値計算) R(数学) R(文字と文字列) R(日付と時刻) R(本の計算を再現) R(正規表現) R(演算子と制御構文) R(環境) R(画像) R(統計学) R(統計解析) R(行列) Visual Basic Visual C++