Javascript中的单精度浮点仿真(float32)

Javascript中的单精度浮点仿真(float32),javascript,floating-point,emulation,Javascript,Floating Point,Emulation,有可能在Javascript中模拟单精度浮点吗?根据Doug Crockford的博客“数字是64位浮点”,但我必须使用单一的一个来移植计算单个精度浮点误差的C++算法。 < P>:ES6标准有数学。Frand(),它将FLOTA64转换为FLOAT32,然后再返回,有效地将浮点舍入到浮点32的精度。有关详细信息,请参阅。尝试此JavaScript函数。它使用.toFixed(6)将数字四舍五入到小数点后六位 function ToSingle(s) { s = s.toString().to

有可能在Javascript中模拟单精度浮点吗?根据Doug Crockford的博客“数字是64位浮点”,但我必须使用单一的一个来移植计算单个精度浮点误差的C++算法。

< P>:ES6标准有数学。Frand(),它将FLOTA64转换为FLOAT32,然后再返回,有效地将浮点舍入到浮点32的精度。有关详细信息,请参阅。

尝试此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];
}
函数到单个(s){
s=s.toString().toUpperCase();
如果(s.indexOf(“E”)=-1)s=parseFloat(s).toExponential().toUpperCase();
如果(s.indexOf(“E”)=-1)返回s
var o=s.split(“E”);
var s1=o[0];
if(s1.indexOf(“.”==-1)返回s
if(s1.split(“.”[1]。长度<7)返回s;
var num=parseFloat(s1);
如果(num+“”=“NaN”)返回s;
返回num.toFixed(6)+“E”+o[1];
}
两条评论:(1)最后一个词应该是“错误”,而不是“错误”。“错误”是处理浮点计算的一个技术术语。(2) 您能给出一些上下文来解释为什么在浮点计算中需要错误吗?可能还有其他方法可以在不模仿javascript中单一精度的情况下实现最终目标。