[c++] 복식에 계수를 사용할 수 없습니까?

C ++ (g ++을 사용하여 컴파일 됨)의 프로그램이 있습니다. 모듈 함수에 피연산자로 두 개의 이중을 적용하려고하지만 다음 오류가 발생합니다.

오류 : ‘double’및 ‘double’유형의 이진 ‘operator %’에 유효하지 않은 피연산자

코드는 다음과 같습니다.

int main() {
    double x = 6.3;
    double y = 2;
    double z = x % y;
}



답변

%연산자는 정수입니다. 당신은 fmod()기능을 찾고 있습니다 .

#include <cmath>

int main()
{
    double x = 6.3;
    double y = 2.0;
    double z = std::fmod(x,y);

}


답변

fmod(x, y) 사용하는 기능입니다.


답변

사용 fmod()에서 <cmath>. C 헤더 파일을 포함하지 않으려는 경우 :

template<typename T, typename U>
constexpr double dmod (T x, U mod)
{
    return !mod ? x : x - mod * static_cast<long long>(x / mod);
}

//Usage:
double z = dmod<double, unsigned int>(14.3, 4);
double z = dmod<long, float>(14, 4.6);
//This also works:
double z = dmod(14.7, 0.3);
double z = dmod(14.7, 0);
double z = dmod(0, 0.3f);
double z = dmod(myFirstVariable, someOtherVariable);


답변

이를 위해 자체 모듈러스 함수구현할 수 있습니다 .

double dmod(double x, double y) {
    return x - (int)(x/y) * y;
}

그런 다음 간단히 dmod(6.3, 2)나머지를 얻는 데 사용할 수 있습니다 0.3.


답변