Mam program w C ++ (skompilowany przy użyciu g ++). Próbuję zastosować dwa podwójne jako operandy do funkcji modułu, ale pojawia się następujący błąd:
błąd: niepoprawne argumenty typu „double” i „double” do binarnego „operatora%”
Oto kod:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
fmod
mogą powodować nieoczekiwane zachowania. Na przykładfmod(1, 0.1);
powinien matematycznie wynosić zero, ale w rzeczywistości będzie wynosić prawie 0,1. Zakres błędu rośnie wraz z wielkością ilorazu. Na przykładfmod(9E14, 0.1);
ocenia na około 0,05, co z matematycznego punktu widzenia jest po prostu błędne.fmod(x,0.1)
podzieli x przez tę dokładną część i zajmie resztę, zamiast dzielić przez wartość liczbową „jedna dziesiąta”.Odpowiedzi:
%
Operator jest dla liczb całkowitych. Szukaszfmod()
funkcji .źródło
angle
tak, powiedzmy,359.9999999
obaangle
ifmod(angle, 360)
prawdopodobnie będą wyświetlane jako360
. (W razie potrzeby dodaj więcej 9). Spróbuj wydrukować wartości z, powiedzmy, 50 cyframi dokładności.fmod(x, y)
jest funkcją, której używasz.źródło
Użyj
fmod()
od<cmath>
. Jeśli nie chcesz dołączać pliku nagłówka C:źródło
W tym celu możesz zaimplementować własną funkcję modułu :
Następnie można po prostu użyć
dmod(6.3, 2)
, aby uzyskać pozostałym0.3
.źródło