Skip to content

Commit 4a5b316

Browse files
committed
Use BigDecimal instead of rounding and going via string to convert double to BigInteger
Signed-off-by: Stefan Marr <git@stefan-marr.de>
1 parent 03d4420 commit 4a5b316

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/som/vmobjects/SNumber.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package som.vmobjects;
22

3+
import java.math.BigDecimal;
34
import java.math.BigInteger;
45

56
import som.vm.Universe;
@@ -36,7 +37,8 @@ public abstract class SNumber extends SAbstractObject {
3637

3738
protected final SNumber intOrBigInt(final double value, final Universe universe) {
3839
if (value > Long.MAX_VALUE || value < Long.MIN_VALUE) {
39-
return universe.newBigInteger(new BigInteger(Double.toString(Math.rint(value))));
40+
BigDecimal bigDecimal = new BigDecimal(value);
41+
return universe.newBigInteger(bigDecimal.toBigInteger());
4042
} else {
4143
return universe.newInteger((long) Math.rint(value));
4244
}

0 commit comments

Comments
 (0)