Co oznacza operator // w Julii?

Aug 20 2020

powiedz, że mam ten kod:

a = 4//2

Zwraca mi to „2 // 1”

b = 4//3

Zwraca mi to „4 // 3”

Rozumiem, że zwraca wartość a i b w najprostszej formie. Ale co wtedy? Pomyślałem, że ten operator zwraca wartość dzielenia w postaci liczby całkowitej, usuwając przypomnienie. Ale nie wygląda na to, że to właśnie robi.

Właściwie mam ten kod:

x=Fun(identity,0..4π)
d=domain(x)
B=[ldirichlet(d),lneumann(d),rneumann(d)]
D=Derivative(d)
κ = 0.33205733621519630   
u0 = (1//2) * κ * x^2 

Chciałem wiedzieć, co to jest (1 // 2). Z tego, co myślałem wcześniej, powinno to być równe zero, ale nie jest to wymagane tutaj. Czy może ktoś wyjaśnić, co się tutaj dzieje i jak działa operator //?

Odpowiedzi

3 PrzemyslawSzufel Aug 20 2020 at 21:41

W Julii, gdy czegoś nie wiesz, pierwszą rzeczą do zrobienia jest naciśnięcie, ?aby przejść do trybu pomocy REPL reprezentowanego przez help?>znak zachęty. Po naciśnięciu ?wpisz polecenie, które Cię interesuje:

help?> //
search: //

  //(num, den)

  Divide two integers or rational numbers, giving a Rational result.

  Examples
  ≡≡≡≡≡≡≡≡≡≡

  julia> 3 // 5
  3//5

  julia> (3 // 5) // (2 // 1)
  3//10

Dodatkowym przydatnym sposobem sprawdzenia, co się dzieje w Julii, jest użycie dump:

julia> dump(2//4)
Rational{Int64}
  num: Int64 1
  den: Int64 2

Na koniec, podążając za komentarzem @DNF, warto zauważyć, że istnieje operator dzielenia liczb całkowitych ÷(i odpowiadająca mu funkcja div), który oblicza x / y, obcięte do liczby całkowitej .:

julia> 13 ÷ 4
3