2015-12-24 26 views
0

對於整數,這個任務很簡單。如何找到大於float值x的java浮點值y,而中間沒有可表示的數字?

private int x; 
private int y 
private int checksOut; 

public TestCase(int input, int checksOut) { 
    if (input == Integer.MAX_VALUE) { 
     throw new IllegalArgumentException("can't increment MAX_VALUE"); 
    } 
    this.x = input; 
    this.y = input +1; 
    this.checksOut = checksOut; 
} 

@Test 
public void test() { 
    boolean biggerThanY = y <= checksOut; 
    boolean smallerThanX = x >= checksOut; 
    assertTrue(biggerThanY || smallerThanX); 
} 

我怎麼可以重寫這個測試與原始的花車,而不是整數,這樣使得我無法找到任何一對值的輸入checksOut不通過測試?

+0

「float」對於兩個大型「int」值之間的值沒有足夠的精度。你可以嘗試'double'來代替。 –

回答

1

您使用Math.ulp(float)(或double使用Math.ulp(double)

從的Javadoc:

返回參數的ulp大小。最後一個雙倍值的ulp單位是該浮點值與下一個幅值較大的double值之間的正距離。請注意,對於非NaN x,ulp(-x)== ulp(x)。

相關問題