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;
}
fmod
pueden 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
angle
es, digamos,359.9999999
entonces ambosangle
yfmod(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