¿Qué significa el operador // en Julia?

Aug 20 2020

decir que tengo este código:

a = 4//2

Esto me devuelve "2//1"

b = 4//3

Esto me devuelve "4//3"

Entiendo que está devolviendo el valor de a y b en su forma más simple. Pero, ¿entonces qué? Pensé que este operador devuelve el valor de la división en forma de número entero, quitando el recordatorio. Pero no parece que esto sea lo que está haciendo.

De hecho, tengo este código:

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 

Quería saber qué es (1//2) aquí. Por lo que había pensado antes, esto debería haber sido igual a cero, pero eso no es lo que se requiere aquí. ¿Puede alguien aclarar qué está sucediendo aquí y cómo funciona el operador //?

Respuestas

3 PrzemyslawSzufel Aug 20 2020 at 21:41

En Julia cuando no sabe algo lo primero que debe hacer es presionar ?para ir al modo de ayuda REPL representado por help?>prompt. Después de presionar ?, escriba el comando que le interese:

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

Otra forma útil adicional de verificar lo que está sucediendo en Julia es usar dump:

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

Finalmente, siguiendo el comentario de @DNF, vale la pena señalar que existe el operador de división de enteros ÷(y una función correspondiente div) que calcula x/y, truncado a un entero:

julia> 13 ÷ 4
3