Is it possible to somehow emulate single precision float in Javascript? According to Doug Crockford's blog "Number is 64-bit floating point", but I have to use single one for porting C++ algorithm which calculates single precision float's error.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The ES6 standard has Math.fround() which converts a float64 to float32 and then back again, effectively rounding the float to float32 precision. See this article for details.
回答2:
Try this JavaScript function. It uses .toFixed(6) to round off the number to six decimal places.
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];
}