Mixed float and long calculation yields wrong answer with no compiler warning
<p>Is it surprising that the following code outputs a wrong value for startTime?</p>

<pre><code>public class Temp {
    public static void main(String args[]){
       float duration = (float) 2.0;
       long endTime = 1353728995;
       long startTime = 0;
       startTime = (long) (endTime - duration);
       System.out.println(startTime);
}
}
</code></pre>
