Cosa significa // operatore in Julia?

Aug 20 2020

diciamo che ho questo codice:

a = 4//2

Questo mi restituisce "2//1"

b = 4//3

Questo mi restituisce "4//3"

Capisco che sta restituendo il valore di aeb nella forma più semplice. Ma cosa allora? Ho pensato che questo operatore restituisca il valore della divisione in forma intera, togliendo il promemoria. Ma non sembra che sia quello che sta facendo.

In realtà ho questo codice:

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 

Volevo sapere cos'è (1//2) qui. Da quello che avevo pensato prima, questo avrebbe dovuto essere uguale a zero, ma non è ciò che è richiesto qui. Qualcuno può chiarire cosa sta succedendo qui e come funziona l'operatore //?

Risposte

3 PrzemyslawSzufel Aug 20 2020 at 21:41

In Julia quando non sai qualcosa la prima cosa da fare è premere ?per andare alla modalità help REPL rappresentata da help?>prompt. Dopo aver premuto ?digita il comando che ti incuriosisce:

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

Un altro modo utile per verificare cosa sta succedendo in Julia è usare dump:

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

Infine, seguendo il commento di @DNF vale la pena notare che esiste l'operatore di divisione intero ÷(e una funzione corrispondente div) che calcola x/y, troncato a un numero intero:

julia> 13 ÷ 4
3