As far as I remember, *float *and *double *differ in the ranges, which leads to different accuracy and speed of calculations. However, today noticed that with different numbers rounding occurs in these data types in different ways.

The screenshots see that

- in the first case
*float*wreshes the value, and*double*rounds

(EXAMPLE1 ) - second case:
*float*rounded,*double*engagement

value (EXAMPLE2 )

What else there is a difference between data types *float *and *double *or I do not see something in the stop?

## Answer 1, Authority 100%

The principal nuance here is that you operate with decimal numbers, and Float and Double & NBSP; – binary. Those numbers that you share and get as a result, *failure of *in the binary number system without periodic fractions. Read more:

**Calculations on floating point numbers do not work **

What you watch is not rounding and enveloping, and computer attempts to impack the inequate and pretend that everything is really fine. Since the number of bits at the Mantissa and the exponential types of Float and Double are different, then rounding and “wrapping” will occur from your point of view “unpredictable”. This situation is also aggravated by the fact that the accuracy of calculations on the conscience of the processor, which, generally speaking, is not obliged to issue accuracy to the last sign. On another computer, you can see other results – if you do not turn on the special “predictable” mode, which is slower. But even in this case, you will only get the same, but “unpredictable” results on different computers.

When you work with Float and Double, please accept as a measure that they are always with the error.