2010-10-31 53 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]; 
}