10Pines / pdepreludat

BSD 3-Clause "New" or "Revised" License
24 stars 2 forks source link

Show integer numbers without decimal digits #23

Closed JuanFdS closed 4 years ago

JuanFdS commented 4 years ago

Qué

Queremos que cuando muestro un número que es entero, lo muestre sin la coma y los digitos decimales, o sea:

> show 1
1
> show 5.3
5.3

Cómo

Agregué un tipo nuevo, RoundedNumber y una función para obtener un RoundedNumber a partir de un Number. Cumple una doble función: Saber si el Number es entero o decimal, y asegurarme que ya está redondeado. Esto es para evitar el patrón de tener que redondear por un lado y luego hacer un if por si es fractional o no, ahora con la funcion rounded ya hago ese paso y el valor del resultado me indica si es entero o decimal.

Con eso las definiciones de numberToIntegral y show, en las que tengo que tener en cuenta si el valor es decimal o entero, creo que quedan más simples.

Tests

Agregué un test para el show, y modifiqué uno de los tests que ahora se romperían porque cambio como mostramos algunos números.

ludat commented 4 years ago

Una cosa que me parece al menos curiosa es que pasa cuando los numero los escribimos como Decimales pero con 0 por ejemplo:

> print 1.0
1

Quizá se parezca un poco raro a algún alumne, lo que me parece a mi es que estaría bueno que la decisión de si un número debería aparece con coma o no, no debería estar atado al numero en sí pero a de donde salió. Por ejemplo el resultado de una división, un número que esta escrito como 1.0.

La verdad no estoy super convencido de esto tampoco solamente queria mencionarlo a ver que les parece

fdodino commented 4 years ago

La otra vez con Juan miramos que en Wollok estamos haciendo

image

algo que me parece good enough. Siendo que ellos solo ven Number, que el show le saque ceros innecesarios me cierra bien...

JuanFdS commented 4 years ago

Entiendo @ludat , eso de que lo que escribo no es lo que me muestra puede ser raro.

Pero creo que la idea de que el número se muestra dependiendo de donde viene tiene sentido cuando sabés que tenes diferentes tipos de numeros, o sea, que haces una diferenciación entre los que obtuviste de operaciones que dan entero y otras que dan decimales, no? :thinking:

Creo que acá como estamos yendo con Number se puede bajar a pocas reglas, que son:

Y mergeo ya que aprobaron (?