¿Cómo calculo el resto de la división de dos float
s?Resto de la división flotante
Respuesta
¿Qué tal a-floor(a/b)*b
- presumiendo a
y b
ambos positivos?
Se podría decir que el "resto" no es un concepto adecuado para las divisiones flotantes, pero lo dejo a su propio criterio.
Sigo recibiendo el valor de '0.2' para' 99.6' y '0.2' - aunque debería ser 0, por supuesto, solo como '996% 2' es 0. –
Utilice fmod
, que calcula el módulo de punto flotante.
double remainder = fmod(a_double, another_double);
Si desea utilizar float
en lugar de double
que tendría que utilizar fmodf
lugar.
' fmod (97.2, 0.2) 'devuelve' 0.2', eso no es muy útil. –
@ TomášZato El problema aquí es que ni 97.2 ni 0.2 se pueden representar _exactamente_ como números en coma flotante. Consulte [¿Por qué los números de coma flotante son inexactos?] (Http://stackoverflow.com/questions/21895756/why-are-floating-point-numbers-inaccurate). En mi depurador, obtengo '97.200000000000002' y' 0.20000000000000001' como argumentos, con el resultado '0.19999999999999746'. Es posible que necesite una biblioteca matemática de punto fijo para su caso. – DarkDust
Supongo que esto también explica por qué hacer 'if (remainder == 0 || remainder == another_double)' falló también, ya que '0.19999999999999746' no es igual a' 0.2'. Compararé la diferencia entre los números que. –
- 1. Encuentra el resto de la división de un número
- 2. ¿Cómo obtener el cociente y el resto de la división
- 3. División de guión y de punto flotante
- 4. ¿Cómo encontrar el resto de una división en C?
- 5. ¿Cómo encontrar el resto de una división en Ruby?
- 6. División entera vs división flotante -> ¿Quién es responsable de proporcionar el resultado?
- 7. ¿Seleccionar filas donde el resto (módulo) es 1 después de la división por 2?
- 8. /euclidiana número entero división de la división
- 9. ¿Cómo hacer que la división de 2 entradas produzca un flotante en lugar de otro int?
- 10. ¿Por qué no hay operación de resto de división para flotantes/dobles en C y C++?
- 11. Problemas con la división en C#
- 12. División y puntos flotantes
- 13. División de punto flotante en un archivo de proceso por lotes
- 14. C# - Convirtiendo un flotante en un int ... y cambiando el int dependiendo del resto
- 15. ¿Cómo obtengo el cociente como int y el resto como un punto flotante en JavaScript
- 16. Detener la división flotante de la barra lateral adhesiva en el pie de página (casi en funcionamiento)
- 17. Coseno en coma flotante
- 18. Aritmética básica de Python - división
- 19. C++ - tipo de la división?
- 20. Operación de módulo de coma flotante
- 21. ¿Cómo puedo realizar una división de 64 bits con una instrucción de división de 32 bits?
- 22. Java - ¿Cómo comprobar si una división es un número entero o un número flotante?
- 23. cómo realizar la división en el intervalo de tiempo
- 24. ¿Cómo se hace el módulo o el resto en Erlang?
- 25. RESTO con DataContracts polimórficos - La deserialización falla
- 26. ¿Cómo obtener fracciones en una división entera?
- 27. División en la primera aparición
- 28. La división entera siempre cero
- 29. La división entera en Python
- 30. Clojure: resto vs.
http://stackoverflow.com/questions/989943/weird-objective-c-mod-behavior – Chris