one shortcoming of computers is the accurate representation of floating-point numbers. any positive integer can be easily represented by a computer in binary: 2 can be represented as 10 42 can be represented as 101010 1000 can be represented as 1111101000 some floating-point numbers are also easy to represent in binary: 0.5 can be represented as 0.1 0.125 can be represented as 0.001 0.109375 can be represented as 0.000111 but consider the number 0.1, a simple number to represent in base-10. the binary equivalent of this number is 0.0001100110011001100110011001100110011001100110011001100... (the sequence continues forever). this causes some unexpected behavior at times. for example, if you try to add 0.1 0.2 in python (or c or java), the result of the computation will display as 0.30000000000000004. this is clearly a challenge for accuracy in computations, and there is unfortunately no built-in way to express these floating-point numbers in fractional form. so instead, you'll create one!