2015-08-28 218 views
1

我遇到以下問題四分之一區間四捨五入...爪哇 - 由

請問在java中圓給隨機數最接近的下四分之一值存在一個已經「內置」功能。

這些都是給定的隨機數:

2.00 -> 2.00 
2.24 -> 2.00 
2.25 -> 2.25 
2.49 -> 2.25 
2.50 -> 2.50 
2.74 -> 2.50 
2.75 -> 2.75 
2.99 -> 2.75 
3.00 -> 3.00 

回答

7

你可以乘以4的值,那麼地板時再由4

public static double quarterRound(double v){ 
    return Math.floor(v*4)/4; 
} 
3

您需要四捨五入到宿舍這樣劃分:

  • 乘以4
  • 下一層的底板int
  • 除以4

請注意,如果您可靠的測量值是與的BigDecimal,而不是原始值(doublefloat)更好的作品。算法保持不變。

+0

權。我改變它。 –

+0

在這個特定的實例中,二進制浮點可能會更好:乘以4和除以4是二進制浮點的精確操作(假定可以避免上溢和下溢),但可能會導致十進制浮點的舍入誤差。底線操作也是精確的(對於十進制和二進制浮點)。 –

0

試試這個:

double value = 2.99D; 
value = (double)(int)(value * 4)/4;