生成隨機數:
public static Float mockFloatBetween(Float begin, Float end) {
return (float) Math.random() * (end - begin) + begin;
}
//等同於
public static Float mockFloatBetween1(Float begin, Float end) {
double point = Math.random();
float between = end - begin;
double pointBetween = between * point;
double result = pointBetween + begin;
return (float) (result);
}
單元測試:
@Test
public void mockFloatBetween() throws Exception {
for (int i = 0; i < 100; i++) {
Float aFloat = DataUtils.mockFloatBetween2(6.66f, 8.88f);
TestCase.assertTrue(6.66f <= aFloat);
TestCase.assertTrue(aFloat <= 8.88f);
}
}
debug:
嚴謹的改造後(保留2位小數):
public static Float mockFloatBetween2(Float begin, Float end) {
BigDecimal bigDecimal = new BigDecimal(end - begin);
BigDecimal point = new BigDecimal(Math.random());
BigDecimal pointBetween = point.multiply(bigDecimal);
BigDecimal result = pointBetween.add(new BigDecimal(begin)).setScale(2, BigDecimal.ROUND_FLOOR);
return result.floatValue();
}