2010-10-31 101 views
6

是否有可能以某种方式模拟单精度浮点数的Javascript?根据道格·克罗克福德的博客“号是64位浮点”,但我不得不使用它移植计算单精度浮点数的误差C++算法一个。单精度浮点数仿真

+0

两条评论:(1)最后一个词应该是“错误”,而不是“错误”。 “错误”是处理浮点计算的技术术语。 (2)你能否给出一些背景知道为什么你需要浮点计算中的错误?可能还有其他方法可以实现您的最终目标,而无需在JavaScript中模拟单精度。 – 2010-11-01 18:57:34

回答

4

的ES6标准具有Math.fround(),其中转换的float64到FLOAT32然后再返回来,有效地四舍五入浮子FLOAT32精度。详细信息请参见this article

-1

试试这个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]; 
}