算術演算子
和 +, +(x, y, ...)
julia> 1 + 2
3
julia> +(1, 2)
3
julia> 1 + 2 + 3 + 4 + 5
15
julia> +(1, 2, 3, 4, 5) # 累和
15
差 -, -(x, y)
julia> 10 - 3
7
julia> -(10, 3)
7
積 *, *(x, y, ...)
julia> 2 * 3
6
julia> *(2, 3)
6
julia> 1 * 2 * 3 * 4 * 5 # 累積
120
julia> *(1, 2, 3, 4, 5)
120
商 /, /(x, y)
julia> 15 / 4
3.75
julia> /(15, 4)
3.75
整数除算 ÷, div(x, y)
julia> 15 ÷ 4 # '÷' は Unicode U+00F7 (category Sm: Symbol, math)
3
÷ を 入力するのは '\div' の後に tab キーを押す。
すなわち,15 ÷ 4 は '15 \div[tab] 4[return]' と入力する。
julia> 15.0 ÷ 4
3.0
julia> div(15, 4)
3
julia> div(15.0, 4)
3.0
剰余 %, rem(x, y)
julia> 15 % 4
3
julia> 15.0 % 4
3.0
julia> 23.1 % 4.2
2.1000000000000005
julia> rem(15, 4)
3
julia> rem(15.0, 4)
3.0
julia> rem(23.1, 4.2)
2.1000000000000005
分数(有理数表現) //
julia> 22 // 7
22//7
julia> 22 / 7 # 実数除算
3.142857142857143
julia> float(22 // 7) # 実数に変換する
3.142857142857143
julia> 22 // 7 + 0 # 0 を足しても表示は不変
22//7
julia> 22 // 7 + 0.0 # 0.0 を足すと実数になる
3.142857142857143
演算子の省略(数学的表記)
乗算記号の省略
julia> x = 1; y = 2; z = 4 # 最後の評価結果のみが表示される
4
julia> x = 1; y = 2; z = 4; # 最後も ; をつければ,何も表示されない
julia> xyz = 12345; # ; をつければ,何も表示されない
julia> 2*(x + y)
6
julia> 2(x + y)
6
julia> 3.5(x+y)
10.5
julia> z(x + y)
ERROR: MethodError: objects of type Int64 are not callable
julia> z*(x + y)
12
julia> x = 3;
julia> 2^3x # 下に示すようにこれは 2 ^ (3 * x) を意味する。
512
julia> 2^9
512
julia> 6 // 2(2 + 1) # 上の例でも同じだが,他の演算子より優先順位が高い。
1//1
数学関数
絶対値 abs()
julia> abs(-123)
123
平方根 sqrt()
julia> sqrt(3)
1.7320508075688772
立方根 cbrt()
julia> cbrt(10)
2.154434690031884
julia> 10^(1/3) # cbrt(10) と同じ結果になる。
2.154434690031884
丸め round()
julia> round(1.5)
2.0
julia> round(2.5) # 注意!! 単なる四捨五入ではない!!
2.0
julia> round(1.23456, digits=2) # 小数点以下を指定して丸める。
1.23
julia> round(1234, digits=-2) # 小数点の左でも丸められる。
1200.0
床 floor()
julia> floor(3.145)
3.0
julia> floor(-3.145) # 引数を越えない整数!
-4.0
天井 ceil()
julia> ceil(3.145)
4.0
julia> ceil(-3.145) # 引数より大きいか等しい数
-3.0
切り捨て trunc()
julia> trunc(1.3)
1.0
julia> trunc(-1.3) # 0 方向への丸め
-1.0
絶対値 abs()
julia> abs(-12)
12
符号 sign(x)
julia> sign(-1.2)
-1.0
julia> sign(0)
0
julia> sign(10.4)
1.0
符号付け copysign(x, y)
x の絶対値に y の符号を付けたものを返す。
julia> copysign(10, -23)
-10
最大公約数 gcd()
julia> gcd(36, 96)
12
最小公倍数 lcm()
julia> lcm(36, 96)
288
指数関数 exp() exp10(), exp2(),
julia> exp(1) # e^1 = ネイピア数
2.718281828459045
julia> exp(2.32) # == e ^ 2.32
10.175674306073333
julia> exp10(1.23) # == 10^1.23
16.982436524617444
julia> exp2(5) # == 2 ^ 5
32.0
対数関数 log(), log10(), log2()
julia> log(2) # 自然対数
0.6931471805599453
julia> log10(2) # 常用対数
0.3010299956639812
julia> log2(2) # 底が 2 の定数
1.0
三角関数 sin(), cos(), tan()
sind(), cosd(), tand() は引数が「度」である。
julia> x = pi / 3 # 角度60度
1.0471975511965976
julia> sin(x) # sqrt(3)/2
0.8660254037844386
julia> sind(60) # 60度
0.8660254037844386
julia> cos(x) # 1/2
0.5000000000000001
julia> tan(x) # sqrt(3)/1
1.7320508075688767
逆三角関数 asin(), acos(), atan()
julia> asin(sin(1.2))
1.1999999999999997
julia> acos(cos(1.2))
1.2
julia> atan(tan(1.2))
1.2
双曲線関数 sinh(), cosh(), tanh()
julia> sinh(2)
3.626860407847019
julia> cosh(2)
3.7621956910836314
julia> tanh(2)
0.9640275800758169
逆双曲線関数 asinh(), acosh(), atanh()
julia> asinh(sinh(2))
2.0
julia> acosh(cosh(2))
2.0
julia> atanh(tanh(2))
2.0000000000000004
その他,特別な関数がある。SpecialFunctions.jl.
文字に対する関数
文字のコード
julia> Int('a')
97
コードから文字
julia> Char(97)
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
文字に対する演算
julia> 'A' < 'B'
true
julia> 'C' - 'A'
2
julia> 'A' + 5
'F': ASCII/Unicode U+0046 (category Lu: Letter, uppercase)
文字列に対する操作
julia> str = "Hello, world.\n"
"Hello, world.\n"
文字(列)の取り出し
julia> str[1]
'H': ASCII/Unicode U+0048 (category Lu: Letter, uppercase)
julia> str[begin]
'H': ASCII/Unicode U+0048 (category Lu: Letter, uppercase)
julia> str[end]
'\n': ASCII/Unicode U+000A (category Cc: Other, control)
julia> str[end - 1]
'.': ASCII/Unicode U+002E (category Po: Punctuation, other)
julia> str[4:9]
"lo, wo"
julia> str[6]
',': ASCII/Unicode U+002C (category Po: Punctuation, other)
julia> str[6:6]
","
文字列抽出関数 SubString()
julia> SubString(str, 1, 4)
"Hell"
文字列連結 string()
julia> greet = "Hello"
"Hello"
julia> whom = "world"
"world"
julia> string(greet, ", ", whom, ".\n")
"Hello, world.\n"
'$変数' を '変数の値' で置き換える
julia> "$greet, $whom.\n"
"Hello, world.\n"
julia> print("I have \$100 in my account.\n") # $ のエスケープ
I have $100 in my account.
文字連結演算子 *
julia> greet * ", " * whom * ".\n"
"Hello, world.\n"
文字列の長さ length()
julia> length(str)
14
文字列の比較
julia> "abc" < "abcd"
true
julia> "abc" != "def"
true
トリプルクオートで囲まれたテキスト
julia> str = """
Hello,
World.
"""
"Hello,\nWorld.\n"
文字の位置 findfirst(), findlast(), findnext(), findprev()
julia> findfirst(isequal('o'), "xylophone")
4
julia> findlast(isequal('o'), "xylophone")
7
julia> indfirst(isequal('z'), "xylophone")
ERROR: UndefVarError: indfirst not defined
Stacktrace:
[1] top-level scope at REPL[81]:1
第 3 引数でオフセットを指定できる。
julia> findnext(isequal('o'), "xylophone", 1)
4
julia> findnext(isequal('o'), "xylophone", 5)
7
julia> findprev(isequal('o'), "xylophone", 5)
4
julia> findnext(isequal('o'), "xylophone", 8)
文字(列)が含まれるか occursin()
julia> occursin("world", "Hello, world.")
true
julia> occursin("l", "Hello, world.")
true
julia> occursin("q", "Hello, world.")
false
julia> occursin('q', "Hello, world.")
false
文字列の繰り返し repeat()
julia> repeat(".:Z:.", 10)
".:Z:..:Z:..:Z:..:Z:..:Z:..:Z:..:Z:..:Z:..:Z:..:Z:."
文字列連結(区切り文字指定) join()
julia> join(["apples", "bananas", "pineapples"], ", ", " and ")
"apples, bananas and pineapples"