When you write ArcTan[0,0], you tell Mathematica that the parameters x and y in ArcTan[x,y] are the exact integer 0. As we know, 0/0 cannot be unambiguously defined, and Indeterminate is returned. So ArcTan[0,0] returns the result of Interval[{-Pi,Pi}], for the codomain of ArcTan[0,0] is just between -Pi and Pi.
On the other hand, if you write ArcTan[0.0,0], y is the exact integer 0, but x is approximate real numbers which approaches 0 but not the exact interger 0. Therefore, (exact 0)/(approximate 0) = exact 0, resulting in ArctTan[0.,0] == 0.( Similar for ArcTan[0,0.] == Pi/2)
Now, consider why ArcTan[0.,0.] returns Interval[{-Pi,Pi}], similar to ArcTan[0,0]. For this question, we must first keep it in mind that every approximate real numbers in Mathematica has its finite precision and accuracy. The default precision in Mathematica can be obtained by $MachinePrecision, which is 15.9546.
So, in the default setting, the paremeters x and y in ArcTan[0.,0.] have the same precision. Let me draw an analogy: when x and y have the the same precision 10,they can see each other the same effective number of digits, that is, the first 10 numbers of x and y are all 0. As for the 11th number and those after that, Mathematica did not take them into account when calculating, since those numbers are out of the precision and ambiguous. As a result, ArcTan[0.,0.] involves the situation 0/0, returning Indeterminate.
Now, let us make a little change-just increase one of parameters (x or y) to the precision 16, such as ArcTan[N[0,16],0.], which returns Pi/2. This is because x=N[0,16] has greater precision than y=0. (which is just 15.9546). So, y with the precision of 15.9546 can only see x the first 15.9546 numbers and think x is 0, while x with precision 16 can see what the y's 16th number is and think y is not 0. Hence, (Not 0)/0 causes Infinity. (Similar to ArcTan[0.,N[0,16]] returning 0)
The above analogy may be inexact, but in short, the phenomenon in question is related to the precision of real numbers in Mathematica.
If you expect to obtain in the case of ArcTan[0.,0] an indeterminate result, you can use Chop function. ArcTan[Chop[0.],0] returns Indeterminate.
Hope this will help you.
ArcTan[0., 0]andArcTan[0, 0.]. Hmm... – J. M.'s missing motivation Oct 01 '12 at 13:19ArcTan[0.0,0.0]again givesArcTan::indet. – celtschk Oct 01 '12 at 14:53