Причудливость в JavaScript или IEEE-754?

Я столкнулся с любопытной проблемой в одном из моих модульных тестов, где яполучаю неожиданные результаты округления в JavaScript:

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

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

Первоначально я подозревал, что это проблема, связанная только с Webkit, но она воспроизводится в Gecko, что подразумевает для меня ожидаемый побочный эффект ECMA-262 или IEEE-754. Я'м, если предположить, что двоичное представление 2.005 немного меньше? Или ECMA-262 определяет методику округления до четности?toFixed

Кто-нибудь хочет пролить некоторое представление о том, что происходит под капотом, просто чтобы успокоить меня?

Обновить: спасибо за комментарии.

Я должен добавить, что одна вещь, которая заставила меня немного нервничать, это комментарии, найденные в быстром поиске в Webkitdtoa.cpp который, казалось, подразумевал, что было много путей к округлению, и разработчики не былиЯ действительно уверен, как это работает, в том числе:FIXME

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

Кроме того, это не так много значит, но IE9 округляет его, как я ожидал, подразумевая, что он либо нет часть ECMA-262 или они имеют ошибку.

Ответы на вопрос(1)

Ваш ответ на вопрос