That is true. Unsure why the engine turns exact 90 into something else but I’ve seen it happen on the editor. Magic float precision. The == operator is however implemented on FVector and FRotator like this:
FORCEINLINE bool FVector::operator==(const FVector& V) const
{
return X==V.X && Y==V.Y && Z==V.Z;
}
FORCEINLINE bool FRotator::operator==( const FRotator& R ) const
{
return Pitch==R.Pitch && Yaw==R.Yaw && Roll==R.Roll;
}
You can use the kismet library to get the precision right with blueprints. All it does is call 3 methods on FTransform accessible in c++, which in turn call similar methods on the vectors:
FTransform::AreRotationsEqual(A, B, RotationTolerance) &&
FTransform::AreTranslationsEqual(A, B, LocationTolerance) &&
FTransform::AreScale3DsEqual(A, B, Scale3DTolerance);