who the significado reparto quadrophenia pelicula disco completa canciones java modulus

java - the - quadrophenia significado



¿Cómo uso el módulo para float/double? (4)

Estoy creando una calculadora RPN para un proyecto escolar. Estoy teniendo problemas con el operador de módulo. Ya que estamos usando el tipo de datos doble, el módulo no funcionará en números de punto flotante. Por ejemplo, 0.5% 0.3 debería devolver 0.2 pero obtengo una excepción de división por cero.

La instrucción dice usar fmod (). He buscado por todas partes para fmod (), incluyendo javadocs pero no puedo encontrarlo. ¿Estoy empezando a pensar que es un método que voy a tener que crear?

Edición: hmm, extraño. Acabo de volver a conectar esos números y parece que funciona bien ... pero por si acaso. ¿Debo tener cuidado al usar el operador mod en Java cuando uso tipos flotantes? Sé que algo como esto no se puede hacer en C ++ (creo).


A diferencia de C, Java permite usar el% tanto para enteros como para puntos flotantes y (a diferencia de C89 y C ++) está bien definido para todas las entradas (incluidos los negativos):

De JLS §15.17.3 :

El resultado de una operación de resto de punto flotante está determinado por las reglas de la aritmética IEEE:

  • Si cualquiera de los operandos es NaN, el resultado es NaN.
  • Si el resultado no es NaN, el signo del resultado es igual al signo del dividendo.
  • Si el dividendo es un infinito, o el divisor es un cero, o ambos, el resultado es NaN.
  • Si el dividendo es finito y el divisor es un infinito, el resultado es igual al dividendo.
  • Si el dividendo es cero y el divisor es finito, el resultado es igual al dividendo.
  • En los casos restantes, donde no está involucrado ni un infinito ni un cero, ni NaN, el resto de coma flotante r de la división de un dividendo n por un divisor d se define por la relación matemática r = n- (d · q ) donde q es un número entero que es negativo solo si n / d es negativo y positivo solo si n / d es positivo, y cuya magnitud es tan grande como sea posible sin exceder la magnitud del verdadero cociente matemático de n y d.

Entonces para tu ejemplo, 0.5 / 0.3 = 1.6 .... q tiene el mismo signo (positivo) que 0.5 (el dividendo), y la magnitud es 1 (el entero con la mayor magnitud que no excede la magnitud de 1.6 ...), y r = 0.5 - (0.3 * 1) = 0.2


Pensé que el operador de módulo regular trabajaría para esto en Java, pero no puede ser difícil de codificar. Solo divide el numerador por el denominador y toma la parte entera del resultado. Multiplica eso por el denominador y resta el resultado del numerador.

x = n / d xint = Integer portion of x result = n - d * xint



fmod es la función estándar de C para manejar el módulo de punto flotante; Me imagino que su fuente decía que Java maneja el módulo de punto flotante de la misma manera que la función fmod de fmod En Java puede usar el operador % en los dobles igual que en los enteros:

int x = 5 % 3; // x = 2 double y = .5 % .3; // y = .2