5

負の角度 (度単位) を正の角度に変換しようとしています。しかし、次のようなコンパイル エラーが発生します。

test.cpp 型 'double' および 'int' の
無効なオペランドからバイナリ 'operator%' へ test.cpp 型 'float' および 'int' の無効なオペランドからバイナリ 'operator%' へ

私のコード:

double to_positive_angle(double angle)
{
   return ((3600000 + angle) % 360);
}

float to_positive_angle(float angle)
{
   return ((3600000 + angle) % 360);
}

明らかに、Float と Double で Modulus 演算子を使用しようとしているからです。

負の角度 (フロート) を正の角度 (フロート) に正常に変換する方法はありますか? または、モジュラス コンパイル エラーを克服する方法はありますか?

4

4 に答える 4

14

このバージョンは、3600000 を超えるものだけでなく、考えられるすべての入力に対して機能し、発生していた%問題を解決します。

double to_positive_angle(double angle)
{
   angle = fmod(angle, 360);
   if (angle < 0) angle += 360;
   return angle;
}
于 2013-05-17T04:02:50.100 に答える