Browse Source

[bug-62738] make int cast a long cast in randbetween

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1841321 13f79535-47bb-0310-9956-ffa450edef68
pull/124/merge
PJ Fanning 5 years ago
parent
commit
74c07d5307

+ 1
- 1
src/java/org/apache/poi/ss/formula/atp/RandBetween.java View File

@@ -77,7 +77,7 @@ final class RandBetween implements FreeRefFunction{
top = bottom;
}
return new NumberEval((bottom + (int)(Math.random() * ((top - bottom) + 1))));
return new NumberEval((bottom + (long)(Math.random() * ((top - bottom) + 1))));
}

+ 11
- 6
src/testcases/org/apache/poi/ss/formula/atp/TestRandBetween.java View File

@@ -53,12 +53,6 @@ public class TestRandBetween extends TestCase {
formulaCell = row.createCell(2, CellType.FORMULA);
}
@Override
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
super.tearDown();
}
/**
* Check where values are the same
*/
@@ -74,6 +68,17 @@ public class TestRandBetween extends TestCase {
assertEquals(-1, formulaCell.getNumericCellValue(), 0);

}

public void testRandBetweenLargeLongs() {
for (int i = 0; i < 100; i++) {
evaluator.clearAllCachedResultValues();
formulaCell.setCellFormula("RANDBETWEEN(0,9999999999)");
evaluator.evaluateFormulaCell(formulaCell);
double value = formulaCell.getNumericCellValue();
assertTrue("rand is greater than or equal to lowerbound", value >= 0.0);
assertTrue("rand is less than or equal to upperbound", value <= 9999999999.0);
}
}
/**
* Check special case where rounded up bottom value is greater than

Loading…
Cancel
Save