favor no tome esto como una respuesta a la pregunta. No lo es, sino un consejo relacionado con la explotación de la diferencia de int y float. Hubiera puesto esto bajo un comentario, excepto que el cuadro de respuesta me permite formatear este comentario.
Esta característica se ha utilizado en todos los lenguajes de programación respetables desde los días de fortran (o antes) - Debo confesar que una vez fui programador de tarjetas perforadas Fortran y Cobol.
Como ejemplo, la división entera de 10/3 arroja un valor entero 3 ya que un entero no tiene ninguna capacidad para mantener el residual fraccionario .3333 ...
Una de las formas en que nosotros (los antiguos programadores antiguos) hemos estado usando esta función es el control de ciclo.
Digamos que deseamos imprimir un conjunto de 1000 cadenas, pero deseamos insertar un salto de línea después de cada 15a secuencia, para insertar algunos caracteres agradables al final de la línea y al comienzo de la siguiente línea. Explotamos esto, dado que el entero k es la posición de una cadena en esa matriz.
int(k/15)*15 == k
es verdadero solo cuando k es divisible por 15, una ocurrencia con una frecuencia de cada 15 celdas. Lo cual es similar a lo que dijo mi amigo acerca de que el reloj muerto de su abuelo era exacto dos veces al día.
int(1/15) = 0 -> int(1/15)*15 = 0
int(2/15) = 0 -> int(2/15)*15 = 0
...
int(14/15) = 0 -> int(14/15)*15 = 0
int(15/15) = 1 -> int(15/15)*15 = 15
int(16/15) = 1 -> int(16/15)*15 = 15
int(17/15) = 1 -> int(17/15)*15 = 15
...
int(29/15) = 1 -> int(29/15)*15 = 15
int(30/15) = 2 -> int(30/15)*15 = 30
Por lo tanto, el bucle,
leftPrettyfy();
for(int k=0; k<sa.length; k++){
print(sa[k]);
int z = k + 1;
if ((z/15)*15 == z){
rightPrettyfy();
leftPrettyfy();
}
}
Mediante la variación de k de una manera caprichosa en el bucle, se podría imprimir una copia impresa triangular
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
Eso es demostrar que, si Considera que esto es un error, este "error " es una función útil que no nos gustaría que se elimine de ninguno de los varios idiomas que hemos utilizado hasta ahora.
Añadiré que esto no es un error. Es una característica. ':]' –
ni error ni característica: está "funcionando como se diseñó". –
Si está trabajando con variables, puede simplemente lanzar cualquiera de ellas para flotar. a = 1; b = 2; a/b = 0; (float) a/b = 0.5; a/(float) b = 0.5; – Azee