std.math
数の計算と乱数。三角関数の角度は弧度法(ラジアン)。 int と float は混ぜて渡せないので、float(n) で揃えてから呼ぶ。
import std.math; print(math.sqrt(9.0)); // 3.0
math.PI math.E math.INF math.abs math.min math.max math.clamp math.sqrt math.pow math.exp math.log math.log10 math.sin math.cos math.tan math.asin math.acos math.atan math.atan2 math.floor math.ceil math.round math.trunc math.is_nan math.is_inf math.random math.random_int math.seed
- math.PI: float¶
-
円周率。
print(math.PI > 3.14); // true
- math.E: float¶
-
自然対数の底。
print(math.E > 2.71); // true
- math.INF: float¶
-
無限大。
print(math.is_inf(math.INF)); // true
- math.abs(x: int) → int¶
-
絶対値。
オーバーロード:
math.abs(x: float) -> floatprint(math.abs(-3)); // 3 print(math.abs(-1.5)); // 1.5
- math.min(a: int, b: int) → int¶
-
小さい方を返す。
オーバーロード:
math.min(a: float, b: float) -> floatprint(math.min(3, 7)); // 3 print(math.min(1.5, 0.5)); // 0.5
- math.max(a: int, b: int) → int¶
-
大きい方を返す。
オーバーロード:
math.max(a: float, b: float) -> floatprint(math.max(3, 7)); // 7 print(math.max(1.5, 0.5)); // 1.5
- math.clamp(x: int, lo: int, hi: int) → int¶
-
lo と hi の間に収める。
オーバーロード:
math.clamp(x: float, lo: float, hi: float) -> floatx int 収めたい値 lo int 下限。これより小さければ lo になる hi int 上限。これより大きければ hi になる print(math.clamp(120, 0, 100)); // 100 print(math.clamp(-0.5, 0.0, 1.0)); // 0.0
- math.sqrt(x: float) → float¶
-
平方根。負の数なら nan。
print(math.sqrt(9.0)); // 3.0
- math.pow(x: float, y: float) → float¶
-
べき乗(x の y 乗)。
print(math.pow(2.0, 10.0)); // 1024.0
- math.exp(x: float) → float¶
-
e の x 乗。
print(math.exp(0.0)); // 1.0
- math.log(x: float) → float¶
-
自然対数。
print(math.log(1.0)); // 0.0
- math.log10(x: float) → float¶
-
常用対数(底が 10)。
print(math.log10(1000.0)); // 3.0
- math.sin(x: float) → float¶
-
正弦。角度は弧度法。
print(math.sin(0.0)); // 0.0
- math.cos(x: float) → float¶
-
余弦。角度は弧度法。
print(math.cos(0.0)); // 1.0
- math.tan(x: float) → float¶
-
正接。角度は弧度法。
print(math.tan(0.0)); // 0.0
- math.asin(x: float) → float¶
-
逆正弦。
print(math.asin(0.0)); // 0.0
- math.acos(x: float) → float¶
-
逆余弦。
print(math.acos(1.0)); // 0.0
- math.atan(x: float) → float¶
-
逆正接。
print(math.atan(0.0)); // 0.0
- math.atan2(y: float, x: float) → float¶
-
座標から角度を出す。戻りは -π 〜 π。
var deg = math.atan2(1.0, 1.0) * 180.0 / math.PI; print(deg); // 45.0
- math.floor(x: float) → int¶
-
小さい方の整数に丸める。
print(math.floor(-1.5)); // -2
- math.ceil(x: float) → int¶
-
大きい方の整数に丸める。
print(math.ceil(1.2)); // 2
- math.round(x: float) → int¶
-
四捨五入する。
print(math.round(2.5)); // 3
- math.trunc(x: float) → int¶
-
0 の方へ落とす。
print(math.trunc(-1.5)); // -1
- math.is_nan(x: float) → bool¶
-
数でない値(nan)かどうか。
print(math.is_nan(math.sqrt(-1.0))); // true
- math.is_inf(x: float) → bool¶
-
無限大かどうか。
print(math.is_inf(1.0 / 0.0)); // true
- math.random() → float¶
-
0 以上 1 未満の乱数。
math.seed(42); print(math.random() < 1.0); // true
- math.random_int(lo: int, hi: int) → int¶
-
lo 以上 hi 以下の整数の乱数。
lo int いちばん小さい値 hi int いちばん大きい値。lo より小さいと実行時エラー math.seed(42); print(math.random_int(1, 6)); // 1(種が同じなら、どこでも同じ並びになる)
- math.seed(n: int) → void¶
-
乱数の種を決める。同じ種なら、どの環境でも同じ並びになる。
math.seed(42); write(math.random_int(1, 100)); write(" "); // 37 math.seed(42); print(math.random_int(1, 100)); // 37(同じ種なら同じ)