最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

floating point - Single precision float emulation in Javascript (float32) - Stack Overflow

programmeradmin1浏览0评论

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.

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.

Share Improve this question edited Nov 2, 2010 at 16:13 qqryq asked Oct 31, 2010 at 9:50 qqryqqqryq 1,9243 gold badges18 silver badges21 bronze badges 1
  • Two ments: (1) The last word should be "error", not "mistake". "error" is a technical term in dealing with floating point putations. (2) Can you give some context for why you need the error in a floating point calculation? It may be that there are other ways to achieve your ultimate goal without emulating single precision in javascript. – Philip Starhill Commented Nov 1, 2010 at 18:57
Add a ment  | 

2 Answers 2

Reset to default 12

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.

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];
}
发布评论

评论列表(0)

  1. 暂无评论