Tengo un programa en C ++ (compilado usando g ++). Estoy tratando de aplicar dos dobles como operandos a la función de módulo, pero aparece el siguiente error:
error: operandos no válidos de los tipos 'double' y 'double' a binario 'operator%'
Aquí está el código:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}

fmodpueden causar comportamientos inesperados. Por ejemplo,fmod(1, 0.1);matemáticamente debería ser cero, pero de hecho será casi 0.1. La extensión del error aumenta con la magnitud del cociente. Por ejemplo, sefmod(9E14, 0.1);evalúa a aproximadamente 0.05, que es desde un punto de vista matemático simplemente erróneo.fmod(x,0.1)dividirá x entre esa fracción precisa y tomará el resto, en lugar de dividirlo por el valor numérico "una décima".Respuestas:
El
%operador es para enteros. Estás buscando lafmod()función .fuente
anglees, digamos,359.9999999entonces ambosangleyfmod(angle, 360)es probable que se muestren como360. (Agregue más 9 seg. Según sea necesario). Intente imprimir los valores con, digamos, 50 dígitos de precisión.fmod(x, y)es la función que usas.fuente
Utilice
fmod()partir<cmath>. Si no desea incluir el archivo de encabezado C:fuente
Puede implementar su propia función de módulo para hacer eso por usted:
A continuación, puede utilizar
dmod(6.3, 2)para obtener el resto,0.3.fuente