6
是否有可能以某种方式模拟单精度浮点数的Javascript?根据道格·克罗克福德的博客“号是64位浮点”,但我不得不使用它移植计算单精度浮点数的误差C++算法一个。单精度浮点数仿真
是否有可能以某种方式模拟单精度浮点数的Javascript?根据道格·克罗克福德的博客“号是64位浮点”,但我不得不使用它移植计算单精度浮点数的误差C++算法一个。单精度浮点数仿真
的ES6标准具有Math.fround(),其中转换的float64到FLOAT32然后再返回来,有效地四舍五入浮子FLOAT32精度。详细信息请参见this article。
试试这个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];
}
两条评论:(1)最后一个词应该是“错误”,而不是“错误”。 “错误”是处理浮点计算的技术术语。 (2)你能否给出一些背景知道为什么你需要浮点计算中的错误?可能还有其他方法可以实现您的最终目标,而无需在JavaScript中模拟单精度。 – 2010-11-01 18:57:34