Which of the following options could be a valid problem when using the == operator when comparing the value of two floating-point numbers?
1. Using this operator converts primitive floating-point numbers to their boxed representations (Double and Float).
2. For floating-point numbers, the compiler optimizes the code when this operator is used, possible changing the output of the comparison.
3. For floating-point numbers, this operator compares their references instead of their values.
4. Due to precision and rounding issues, this operator may not report floating-point numbers as exactly equal (even when they are in theory).