Эмуляция с плавающей точкой одинарной точности в Javascript (float32) - PullRequest
6 голосов
/ 31 октября 2010

Можно ли как-то эмулировать float одинарной точности в Javascript? Согласно блогу Дуга Крокфорда «Число - это 64-битное число с плавающей запятой», но я должен использовать один для переноса алгоритма C ++, который вычисляет ошибку с плавающей запятой одинарной точности.

Ответы [ 2 ]

6 голосов
/ 23 октября 2014

Стандарт ES6 имеет Math.fround (), который преобразует float64 в float32, а затем обратно, эффективно округляя float до точности float32. Подробнее см. в этой статье .

0 голосов
/ 07 октября 2016

Попробуйте эту функцию JavaScript. Он использует .toFixed (6), чтобы округлить число до шести десятичных знаков.

function ToSingle(s) {
 s = s.toString().toUpperCase();
 if (s.indexOf("E") == -1) s = parseFloat(s).toExponential().toUpperCase();
 if (s.indexOf("E") == -1) return s

 var o = s.split("E");
 var s1 = o[0];

 if (s1.indexOf(".") == -1) return s
 if (s1.split(".")[1].length < 7) return s;

 var num = parseFloat(s1);
 if (num + "" == "NaN") return s;

 return num.toFixed(6) + "E" + o[1];
}
...