È un errore di arrotondamento a virgola mobile a causa del vettore generato dal colon.
Come Rasman ha detto, se si fa:
floor((0.1:0.1:2 + eps)/0.01)
Non ci saranno errori di arrotondamento.
Tuttavia, sulla base how the colon operator works, vi suggerisco di fare lo stesso calcolo come questo:
floor([(1:20)/10]/0.01)
[Edit: seguente commento di Rasman, vorrei aggiungere che quest'ultimo approccio funziona per negativo valori, mentre l'aggiunta di eps
talvolta non riesce]
La linea di fondo è che è meglio utilizzare l'operatore del colon con i nte numeri per ridurre gli errori di arrotondamento.
fonte
2012-06-07 11:41:49
129. Quel bastardo furtivo. –
Forse sto dividendo i capelli, ma non potevi aver appena fatto "10: 10: 200"? – kevlar1818
related: [Informazioni sulla precisione in virgola mobile: perché i numeri di iterazione non sono uguali?] (Http://stackoverflow.com/a/6478526/97160) – Amro