2015-08-28 177 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;