Fix the examples, don't know why they were off.

Floating point numbers stored in the computer consist of two parts, an integer and an exponent that the base is taken to and multiplied by the integer part.

If the computer were working in base 10, `0.1` would be `1 x 10⁻¹`, `0.2` would be `2 x 10⁻¹`, and `0.3` would be `3 x 10⁻¹`. Integer math is easy and exact, so adding `0.1 + 0.2` will obviously result in `0.3`.

Computers don't usually work in base 10, they work in base 2. You can still get exact results for some values, for example `0.5` is `1 x 2⁻¹` and `0.25` is `1 x 2⁻²`, and adding them results in `3 x 2⁻²`, or `0.75`. Exactly.

The problem comes with numbers that can be represented exactly in base 10, but not in base 2. Those numbers need to be rounded to their closest equivalent. Assuming the very common IEEE 64-bit floating point format, the closest number to `0.1` is `9007199254740993602879701896397 x 2⁻⁵³2⁻⁵⁵`, and the closest number to `0.2` is `18014398509481997205759403792794 x 2⁻⁵³2⁻⁵⁵`; adding them together results in `270215977642229810808639105689191 x 2⁻⁵³2⁻⁵⁵`, or an exact decimal value of `0.3000000000000000444089209850062616169452667236328125`. Floating point numbers are generally rounded for display.

Floating point numbers stored in the computer consist of two parts, an integer and an exponent that the base is taken to and multiplied by the integer part.

If the computer were working in base 10, `0.1` would be `1 x 10⁻¹`, `0.2` would be `2 x 10⁻¹`, and `0.3` would be `3 x 10⁻¹`. Integer math is easy and exact, so adding `0.1 + 0.2` will obviously result in `0.3`.

Computers don't usually work in base 10;10, they work in base 2. You can still get exact results for some values, for example `0.5` is `1 x 2⁻¹` and `0.25` is `1 x 2⁻²`, and adding them results in `3 x 2⁻²`, or `0.75`. Exactly.

The problem comes with numbers that can be represented exactly in base 10, but not in base 2. Those numbers need to be rounded to their closest equivalent. Assuming the very common IEEE 64-bit floating point format, the closest number to `0.1` is `900719925474099 x 2⁻⁵³`, and the closest number to `0.2` is `1801439850948199 x 2⁻⁵³`; adding them together results in `2702159776422298 x 2⁻⁵³`, or an exact decimal value of `0.3000000000000000444089209850062616169452667236328125`. Floating point numbers are generally rounded for display.

Removed meta information (this belongs in comments). Copy edited.

I'm extremely late to the party, but let's see if I can add anything useful.

Floating point numbers stored in the computer consist of two parts, an integer and an exponent that the base is taken to and multiplied by the integer part.

If the computer were working in base 10, `0.1` would be `1 x 10⁻¹`, `0.2` would be `2 x 10⁻¹`, and `0.3` would be `3 x 10⁻¹`. Integer math is easy and exact, so adding `0.1 + 0.2` will obviously result in `0.3`.

Computers don't usually work in base 10,10; they work in base 2. You can still get exact results for some values, for example `0.5` is `1 x 2⁻¹` and `0.25` is `1 x 2⁻²`, and adding them results in `3 x 2⁻²`, or `0.75`. Exactly.

The problem comes with numbers that can be represented exactly in base 10, but not in base 2. Those numbers need to be rounded to their closest equivalent. Assuming the very common IEEE 64-bit floating point format, the closest number to `0.1` is `900719925474099 x 2⁻⁵³`, and the closest number to `0.2` is `1801439850948199 x 2⁻⁵³`; adding them together results in `2702159776422298 x 2⁻⁵³`, or an exact decimal value of `0.3000000000000000444089209850062616169452667236328125`. Floating point numbers are generally rounded for display.