Tengo un programa en C++ (compilado usando g ++). Estoy tratando de aplicar dos dobles como operandos a la función de módulo, pero me sale el siguiente error:No se puede usar el módulo en dobles?
error: invalid operands of types 'double' and 'double' to binary 'operator%'
Aquí está el código:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
Como se ha señalado, HOQF() proporciona la función necesaria. Como aún no se ha notado, es importante darse cuenta de que los errores de redondeo en el segundo operando de 'fmod' pueden causar comportamientos inesperados. Por ejemplo, 'fmod (1, 0.1);' debe ser matemáticamente cero, pero de hecho será casi 0.1. El grado de error aumenta con la magnitud del cociente. Por ejemplo, 'fmod (9E14, 0.1);' se evalúa a aproximadamente 0.05, lo cual es matemáticamente erróneo. – supercat
@supercat más detalles sería increíble. Creo que tengo una idea de lo que está detrás de las escenas para hacer que lo que dices sea cierto, pero sería bueno ver las razones de por qué lo que dices es verdad; Sería interesante ver cómo funciona detrás de las escenas (creo que entiendo, pero podría ser muy fácil equivocarse). – RastaJedi
Los valores de punto flotante representan múltiplos enteros exactos o fracciones de potencias de dos. Por ejemplo, el entero literal 0.1 es exactamente 3602879701896397/36028797018963968 (el último valor es una potencia de dos). 'fmod (x, 0.1)' dividirá x por esa fracción precisa y tomará el resto, en lugar de dividir por el valor numérico "una décima". – supercat