是否有可能以某种方式模拟Javascript中的单精度浮点数?根据Doug Crockford的博客“Number is 64-bit floating point”,但是我必须使用单一来移植C ++算法来计算单精度浮点误差。
答案 0 :(得分:6)
ES6标准有Math.fround(),它将float64转换为float32然后再返回,有效地将float舍入为float32精度。有关详细信息,请参阅this article。
答案 1 :(得分:-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];
}