اعداد و ریاضیات در جولیا

عملیات ریاضی، توابع ریاضی داخلی، دقت اعداد و اعداد مختلط

عملیات ریاضی پایه

println(7 + 3)     # 10 (جمع)
println(7 - 3)     # 4 (تفریق)
println(7 * 3)     # 21 (ضرب)
println(7 / 3)     # 2.333... (تقسیم — همیشه Float!)
println(7 ÷ 3)     # 2 (تقسیم صحیح — نماد ÷!)
println(7 % 3)     # 1 (باقیمانده)
println(2 ^ 10)    # 1024 (توان)
نماد ÷ برای تقسیم صحیح! در REPL با \div + Tab تایپش کنید. تقسیم معمولی / همیشه نتیجه اعشاری می‌دهد.

توابع ریاضی داخلی

جولیا برای ریاضیات ساخته شده — همه چیز داخلی است:

تابعکارمثال
abs(x)قدر مطلقabs(-5) → 5
sqrt(x) یا √xجذر√16 → 4.0
cbrt(x)جذر سومcbrt(27) → 3.0
exp(x)e به توان xexp(1) → 2.718...
log(x)لگاریتم طبیعیlog(exp(1)) → 1.0
sin, cos, tanمثلثاتی (رادیان)sin(0) → 0.0
floor(x)گرد به پایینfloor(3.7) → 3.0
ceil(x)گرد به بالاceil(3.2) → 4.0
round(x)گرد کردنround(3.5) → 4.0
gcd(a, b)ب.م.مgcd(12, 18) → 6
lcm(a, b)ک.م.مlcm(4, 6) → 12
factorial(n)فاکتوریلfactorial(5) → 120

بیشینه و کمینه

println(max(3, 7, 1, 9))    # 9
println(min(3, 7, 1, 9))    # 1

# برای آرایه:
nums = [4, 8, 15, 16]
println(maximum(nums))   # 16 (برای کل آرایه!)
println(minimum(nums))   # 4
توجه: max چند آرگومان می‌گیرد، اما maximum روی کل آرایه کار می‌کند!

اعداد مختلط — داخلی!

جولیا یکی از معدود زبان‌هایی است که اعداد مختلط را داخلی دارد:

z1 = 3 + 4im       # im پسوند موهومی
z2 = 1 - 2im

println(z1 + z2)         # 4 + 2im
println(abs(z1))         # 5.0 (قدر مطلق مختلط)
println(real(z1))        # 3 (جزء حقیقی)
println(imag(z1))        # 4 (جزء موهومی)

اعداد گویا (Fractional)

a = 1 // 3     # کسر دقیق!
b = 2 // 3

println(a + b)     # 1 // 1 (دقیقاً ۱!)
println(float(a))  # 0.333... (تبدیل به اعشاری)

ثابت‌های ریاضی

println(π)       # pi = 3.14159...
println(e)        # عدد اویلر
println(ℯ)        # همان e با نماد!

دقت اعشاری — مراقب باشید!

println(0.1 + 0.2)           # 0.30000000000000004 (!)
println(0.1 + 0.2 == 0.3)    # false!

# راه حل: isapprox
println(isapprox(0.1 + 0.2, 0.3))   # true
این مشکل مال جولیا نیست — همه زبان‌ها با Float64 این را دارند (استاندارد IEEE 754). برای مقایسه اعشاری‌ها همیشه از isapprox استفاده کنید.

فرمت اعداد

x = 3.14159
println(round(x, digits=2))       # 3.14
println(round(x, sigdigits=3))    # 3.14

n = 1234567.891
println(round(n, digits=1))   # 1234567.9

این مبحث بخشی از دوره آموزش کامل جولیا است.

ابزارهای مرتبط