Eu tenho um programa em C ++ (compilado usando g ++). Estou tentando aplicar dois duplos como operandos à função de módulo, mas recebo o seguinte erro:
error: operandos inválidos dos tipos 'double' e 'double' para o operador binário '%'
Aqui está o código:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
fmod
podem causar comportamentos inesperados. Por exemplo,fmod(1, 0.1);
matematicamente deve ser zero, mas na verdade será quase 0,1. A extensão do erro aumenta com a magnitude do quociente. Por exemplo,fmod(9E14, 0.1);
avalia em cerca de 0,05, o que é do ponto de vista matemático completamente errado.fmod(x,0.1)
dividirá x por essa fração precisa e ficará com o restante, em vez de dividir pelo valor numérico "um décimo".Respostas:
O
%
operador é para números inteiros. Você está procurando afmod()
função .fonte
angle
for, digamos,359.9999999
ambosangle
efmod(angle, 360)
provavelmente serão exibidos como360
. (Adicione mais 9s conforme necessário.) Tente imprimir os valores com, digamos, 50 dígitos de precisão.fmod(x, y)
é a função que você usa.fonte
Use
fmod()
de<cmath>
. Se você não deseja incluir o arquivo de cabeçalho C:fonte
Você pode implementar sua própria função de módulo para fazer isso por você:
Então você pode simplesmente usar
dmod(6.3, 2)
para obter o restante0.3
,.fonte