Its important to understand that 0.1 + 0.2 is actually 0.3, and Scientific is giving the correct answer.<p>The Haskell type annotations aren&#x27;t <i>casting</i> values that are interpreted as binary floating point (as might be the case in some languages), it is <i>instructing</i> the compiler how to treat the literals. Scientific is arbitrary precision <i>decimal</i>, so it can <i>exactly</i> represent 0.1 and 0.2, and return the exact result 0.3, rather than representing 0.1 and 0.2 as binary floating point approximations, adding them, and then producing some decimal approximation of the binary floating point result when asked.