2013-11-14 116 views
3

我正在研究JavaScript中的函數。我有兩個變量x和y。限制JavaScript中的浮點數精度

我需要在屏幕上劃分兩個變量和顯示結果:

x=9; y=110; 
x/y; 

然後我得到的結果爲:

0.08181818181818181

我需要做的它使用了我在另一篇文章中發現的一些東西,如BigDecimal.js

我想要的結果顯示爲:

0.081

+0

[與浮點處理的可能重複在JavaScript中的精度](http://stackoverflow.com/questions/11695618/dealing-with-float-precision-in-javascript) –

+0

這又是重複的:https://stackoverflow.com/questions/1458633/how -to-交易與 - 浮點數字精密-I n-javascript – Scheintod

回答

13

試試這個它是昏迷後四捨五入至3個數字:

(x/y).toFixed(3); 

現在,您的結果將是一個字符串。如果你需要它是漂浮只是做:

parseFloat((x/y).toFixed(3)); 
+1

是的但注意'.toFixed()'返回一個字符串,而不是一個數字。當然可能無關緊要。 – Pointy

+0

是的,我現在想知道如何: var x =(9/110).toFixed(3); console.log(x); console.log(x * 24); console.log(x/45); console.log(x--); 所有這些工作,即使它是字符串。它什麼時候重要?謝謝 – kajojeq

+0

@kajojeq,如果你喜歡'(9/110).toFixed(3)=== 0.082',它會返回false – smerny

3

你可以做到這一點

Math.round(num * 1000)/1000 

這將正確詳談。如果你希望只截斷,而不是實際回合,你可以使用floor()代替round()

3

使用此0.818181圓... 0.81:

x = 9/110; 
Math.floor(x * 1000)/1000; 
1

試試這個

var num = x/y; 
parseFloat((Math.round(num * 100)/100).toPrecision(3)) 
+4

你應該知道,這個問題已經過去了一年,有一個可接受的答案和多個可能的重複。因此,您應該格外小心,以證明您的答案比已經提供的答案更有用。 – Claies