diff --git a/src/org/redkale/source/EntityCache.java b/src/org/redkale/source/EntityCache.java index 4993b7540..459816a46 100644 --- a/src/org/redkale/source/EntityCache.java +++ b/src/org/redkale/source/EntityCache.java @@ -702,14 +702,26 @@ public final class EntityCache { if (numb == null) { numb = (Number) val; } else { - numb = numb.longValue() + ((Number) val).longValue(); + if (numb instanceof Float || ((Number) val) instanceof Float) { + numb = numb.floatValue() + ((Number) val).floatValue(); + } else if (numb instanceof Double || ((Number) val) instanceof Double) { + numb = numb.doubleValue() + ((Number) val).doubleValue(); + } else { + numb = numb.longValue() + ((Number) val).longValue(); + } } break; case DEC: if (numb == null) { numb = (Number) val; } else { - numb = numb.longValue() - ((Number) val).longValue(); + if (numb instanceof Float || ((Number) val) instanceof Float) { + numb = numb.floatValue() - ((Number) val).floatValue(); + } else if (numb instanceof Double || ((Number) val) instanceof Double) { + numb = numb.doubleValue() - ((Number) val).doubleValue(); + } else { + numb = numb.longValue() - ((Number) val).longValue(); + } } break; case MUL: