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