Код Angularjs 1.5 нарушен для (Uint8Array) для Internet Explorer, но работает для chrome [duplicate]

Многие многочисленные дубликаты этого вопроса задают вопрос о влиянии округления с плавающей запятой на конкретные числа. На практике легче понять, как это работает, глядя на точные результаты вычислений, а не просто на чтение. Некоторые языки предоставляют способы сделать это - например, преобразование float или double в BigDecimal в Java.

Так как это вопрос, связанный с языком, ему нужны языковые агностические инструменты, такие как как Десятичный преобразование с плавающей запятой .

Применяя его к числам в вопросе, рассматриваемым как удваивает:

0,1 преобразуется в 0,1000000000000000055511151231257827021181583404541015625,

0,2 преобразуется в 0.200000000000000011102230246251565404236316680908203125,

0,3 конвертируется в 0,29999999999999999989897769753748434595763683319091796875 и

0,30000000000000004 преобразуется в 0,3000000000000000444089209850062616169452667236328125.

Добавление первых двух чисел вручную или в десятичный калькулятор, такой как Full Precision Calculator , показывает точную сумму фактических входов: 0.3000000000000000166533453693773481063544750213623046875.

Если округлить до эквивалента 0,3, ошибка округления будет 0.0000000000000000277555756156289135105907917022705078125. Округление до эквивалента 0,30000000000000004 также дает ошибку округления 0,0000000000000000277555756156289135105907917022705078125.

Возвращаясь к конвертеру с плавающей запятой, необработанный шестнадцатеричный показатель для 0.30000000000000004 равен 3fd3333333333334, который заканчивается четной цифрой и, следовательно, является правильным результатом.

4
задан xeon48 23 February 2016 в 12:44
поделиться

4 ответа

Поскольку метод Array.from не поддерживается IE, вы можете попробовать:

[].slice.call(document.getElementsByTagName('span')).forEach(function(v) {});

Это не требует использования каких-либо сторонних библиотек.

5
ответ дан Stanislav Kvitash 4 September 2018 в 10:34
поделиться

Как поясняется Mozilla здесь , функция Array.from еще не поддерживается IE

1
ответ дан Erazihel 4 September 2018 в 10:34
поделиться

вы можете использовать вместо _underscore.js функцию _.toArray(document.getElementsByTagName('span')) ...

FYI:

'Array.from' не поддерживается в следующих режимах документа: Quirks, стандарты Internet Explorer 6, стандарты Internet Explorer 7, стандарты Internet Explorer 8, стандарты Internet Explorer 9, стандарты Internet Explorer 10, стандарты Internet Explorer 11. Не поддерживается в Windows 8.1.

source

0
ответ дан innovarerz 4 September 2018 в 10:34
поделиться

Вы можете использовать polyfill ES2015, например es6-shim , Array.from или Babel polyfill

1
ответ дан Tamas Hegedus 4 September 2018 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: