¿Redondear la peculiaridad en JavaScript o IEEE-754?

Me he encontrado con un problema curioso en una de mis pruebas de unidad donde obtengo resultados de redondeo inesperados en JavaScript:

(2.005).toFixed(2)
// produces "2.00"

(2.00501).toFixed(2)
// produces "2.01"

Inicialmente, sospeché que se trataba de un problema exclusivo de Webkit, pero se reproduce en Gecko, lo que me implica que es un efecto secundario esperado de ECMA-262 o IEEE-754. Supongo que la representación binaria de 2.005 es un poco menos? ¿O el ECMA-262 especifica una metodología de ronda a par paratoFixed?

¿Alguien se preocupa por arrojar una idea de lo que está sucediendo bajo el capó solo para darme tranquilidad?

Actualizar: Gracias por los comentarios.

Debo agregar, una de las cosas que me puso un poco nerviosa fueron los comentarios encontrados en una búsqueda rápida en Webkitdtoa.cpp lo que parecía implicar que había múltiples caminos para redondear y los desarrolladores no estaban realmente seguros de cómo funcionaba, incluyendo unaFIXME:

https://trac.webkit.org/browser/trunk/Source/WTF/wtf/dtoa.cpp#L1110

Además, no significa mucho, pero IE9 lo redondea como esperaba, dando a entender que no es parte de ECMA-262 o que tienen un error.

Respuestas a la pregunta(1)

Su respuesta a la pregunta