2013-07-27 45 views
3

我試圖通過變量來劃分屏幕寬度,以便在webview中繪製等距的UI部分。在JavaScript中浮點數的劃分

但是,當變量爲3時,JavaScript中的100/3結果爲33.3333333333333336,並且由於商的總和大於100%,第三部分無法按預期繪製。

這個問題有沒有很好的解決方法?

+0

可能重複的[JavaScript的浮點數學破碎?](http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken) – delnan

回答

1

你可以做

Math.floor(100/3); 

這將始終圍繞小數點較小最接近的整數,所以在你的情況下,將它送到33

+0

然後會有1%的損失在屏幕房地產:P – Jivings

7

您可以指定分區的精度:

var width = (100/3).toPrecision(3); 
3

你能做的最好的是獲得儘可能接近:

(100/3).toFixed(2) 
0

爲三個切片中的兩個切片獲取寬度。以像素爲單位從目標寬度中減去它們實際寬度的總和,得到第三個切片的寬度。它可能比其他切片寬或窄一個或兩個像素,但對於任何合理的屏幕分辨率都不可見。

0

100 *(1/3)將返回33.33333333333333。

注:

1/3 * 100返回33.33333333333333

100 * 1/3返回33.333333333333336

因此,使用括號是安全的。