JavaScript:
var lon2 = (lon1.toRad()+L+3*Math.PI)%(2*Math.PI) - Math.PI;
Ich habe nach C ++ konvertiert:
double lon2 = (Deg2Rad(lon1)+L+3*PI)%(2*PI) - PI;
Hinweis: Deg2Rad-Funktion gibt doppelt zurück, PI ist ebenfalls doppelt, L und lon1 ebenfalls doppelt. Dann habe ich folgende Fehler für dieselbe Zeile erhalten:
error C2296: "%" : illegal, left operand has type "double"
error C2297: "%" : illegal, right operand has type "double"
Was ist daran falsch? %
modulo?
Antworten:
6 für die Antwort № 1Der Modulo-Operator ist nicht für definiert float
s und double
s (nur ganzzahlige Typen) verwenden fmod Stattdessen (oder überlegen Sie, wie Sie Ihre Berechnung durchführen möchten).
4 für die Antwort № 2
C ++ führt keine Modulo-Operation für a aus double
- Ich schlage vor zu verwenden fmod()
im <math.h>
Wenn Sie sehr scharf darauf sein wollten, könnten Sie das Modulo überladen (%
) Operator, um Ihre gewünschten Datentypen zu bearbeiten.
2 für die Antwort № 3
%
ist nur für ganze Zahlen definiert. Verwenden Sie die fmod () Funktion in <cmath>
Berechnen des Moduls einer Gleitkommazahl (float
oder double
).