C++11 numeric_limits<float> and arithmetic
<p>When I compiled this C++ code I didn't expect to see this output</p>

<pre><code>#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;limits&gt;

int main() {
    const long double ldMinFloat = std::numeric_limits&lt;float&gt;::lowest();
    std::cout &lt;&lt; std::left &lt;&lt; std::setw(20) &lt;&lt; "ldMinFloat" &lt;&lt; "= " &lt;&lt; std::fixed &lt;&lt; ldMinFloat &lt;&lt; std::endl;
    std::cout &lt;&lt; std::left &lt;&lt; std::setw(20) &lt;&lt; "(ldMinFloat - 10)" &lt;&lt; "= " &lt;&lt; std::fixed &lt;&lt; (ldMinFloat - 10) &lt;&lt; std::endl;
return 0;
    return 0;
}
</code></pre>

<p>Here is the output</p>

<pre><code>ldMinFloat          = -340282346638528859811704183484516925440.000000
(ldMinFloat - 10)   = -340282346638528859811704183484516925440.000000
</code></pre>

<p>Can someone be kind enough to explain why the subtraction is not -3402823466385288598117041834845169254<strong>50</strong>.000000???</p>

<p>Based on this <a href="http://en.cppreference.com/w/cpp/language/types" rel="nofollow">link</a> long double max value is +/- 1.797,693,134,862,315,7*10^308 and I don't really understand why the mantissa would explain this behaviour in basic integer arithmetic? or is it the implicit conversion from float to long double? or it's the operator &lt;&lt; of std::cout?</p>

<p>Any idea to help me feel less stupid before going to sleep?</p>