Es un error de redondeo de punto flotante debido al vector generado por dos puntos.
Como Rasman dijo, si lo hace:
floor((0.1:0.1:2 + eps)/0.01)
No habrá errores de redondeo.
Sin embargo, en base a how the colon operator works, sugiero que lo hace el mismo cálculo de esta manera:
floor([(1:20)/10]/0.01)
[Edición: siguiente comentario de Rasman, voy a añadir que este último enfoque funciona para el negativo valores también, mientras que agrega eps
veces falla]
La conclusión es que es mejor usar el operador de dos puntos con i nteger números para minimizar los errores de redondeo.
129. Ese hijo de puta astuto. –
Tal vez estoy partiendo pelos, pero ¿no podrías haber hecho '10: 10: 200'? – kevlar1818
relacionado: [Acerca de la precisión de punto flotante: ¿por qué los números de iteración no son iguales?] (Http://stackoverflow.com/a/6478526/97160) – Amro