diff --git a/src/main/java/lua/value/LDouble.java b/src/main/java/lua/value/LDouble.java index 33c77ce9..ea84598a 100644 --- a/src/main/java/lua/value/LDouble.java +++ b/src/main/java/lua/value/LDouble.java @@ -39,7 +39,8 @@ public class LDouble extends LNumber { case Lua.OP_SUB: return new LDouble( lhs - rhs ); case Lua.OP_MUL: return new LDouble( lhs * rhs ); case Lua.OP_DIV: return new LDouble( lhs / rhs ); - case Lua.OP_MOD: return new LDouble( lhs % rhs ); + case Lua.OP_MOD: return new LDouble( lhs - Math.floor(lhs/rhs) * rhs ); + // case Lua.OP_POW: return new LDouble( Math.pow(lhs, rhs) ); } return luaUnsupportedOperation(); diff --git a/src/main/java/lua/value/LInteger.java b/src/main/java/lua/value/LInteger.java index 51b799ff..b46c91d3 100644 --- a/src/main/java/lua/value/LInteger.java +++ b/src/main/java/lua/value/LInteger.java @@ -34,7 +34,7 @@ public class LInteger extends LNumber { case Lua.OP_SUB: return new LInteger( m_value - rhs ); case Lua.OP_MUL: return new LInteger( m_value * rhs ); case Lua.OP_DIV: return new LInteger( m_value / rhs ); - case Lua.OP_MOD: return new LInteger( m_value % rhs ); + case Lua.OP_MOD: return new LInteger( m_value - ((int) Math.floor(m_value/(double)rhs)) * rhs ); // case Lua.OP_POW: return new LInteger( (int) Math.pow(m_value, rhs) ); } return luaUnsupportedOperation();