Lembre-se de que os computadores são binários
Independentemente de quantos dígitos de base 2 você deseja usar, o valor decimal 0,1 não pode ser representado exatamente como uma fração de base 2.
Na base2 1/10 é 0,0001100110011001100110011 ... (repetindo para sempre)
Infelizmente, isso é resultado de um ponto flutuante binário, e qualquer linguagem que use o FPU terá resultados semelhantes, como o Python.
In [1]: 1991.0 * 0.1
Out[1]: 199.10000000000002
In [2]: 0.1 + 0.2
Out[6]: 0.30000000000000004
Este é um Representation error
porque muitas vezes as frações decimais não podem ser representadas exatamente como frações binárias (base 2).
Perl, C, C ++, Java, Fortran, Python e esquema demonstrarão esse comportamento.