Я заново внедряю некоторый код C в JavaScript, и для того, чтобы пройти тесты, мне нужно, чтобы код JavaScript возвращал тот же результат, что и код C. Код C имеет дело исключительно с числами с плавающей точкой одинарной точности (в то время как JavaScript number
имеет двойную точность).
Например, в C -3.12744117f + 8.60676003f
равно 5.47931862f
. В JavaScript -3.12744117 + 8.60676003
равно 5.47931886
, что отличается (Math.fround
возвращает 5.479319095611572
, что даже больше).
Я знаю, что результат JavaScript технически "более корректен", но я стремлюсь к согласованности с менее точным C-аналогом.
Есть ли способ применить 32-битные операции в JavaScript? Нужно ли вручную внедрять стандарт IEEE 574 вручную или есть другие способы?