package org.nutz.el.opt.arithmetic;
import org.nutz.el.opt.TwoTernary;
/**
* 取模
* @author juqkai(juqkai@gmail.com)
*
*/
public class ModOpt extends TwoTernary {
public int fetchPriority() {
return 3;
}
public Object calculate() {
Number lval = (Number) calculateItem(this.left);
Number rval = (Number) calculateItem(this.right);
if(rval instanceof Double || lval instanceof Double){
return lval.doubleValue() % rval.doubleValue();
}
if(rval instanceof Float || lval instanceof Float){
return lval.floatValue() % rval.floatValue();
}
if(rval instanceof Long || lval instanceof Long){
return lval.longValue() % rval.longValue();
}
return lval.intValue() % rval.intValue();
}
public String fetchSelf() {
return "%";
}
}