Long x Numeric!

Na minha Entidade, Classe eu uso Long no Banco eu uso Numeric, para valores !
Isso não vai da problema no cálculos exatos ?

package br.gov.nutec.mb;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

 public final class Moeda {
     private static final DecimalFormatSymbols DOLAR = new DecimalFormatSymbols(Locale.US);
     public static final DecimalFormat DINHEIRO_DOLAR = new DecimalFormat("¤ ###,###,##0.00",DOLAR);
     private static final DecimalFormatSymbols EURO = new DecimalFormatSymbols(Locale.GERMANY);
     public static final DecimalFormat DINHEIRO_EURO = new DecimalFormat("¤ ###,###,##0.00",EURO);
     private static final Locale BRAZIL = new Locale("pt","BR");
     private static final DecimalFormatSymbols REAL = new DecimalFormatSymbols(BRAZIL);
     public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat("¤ ###,###,##0.00",REAL);
     public static String mascaraDinheiro(double valor, DecimalFormat moeda){
     return moeda.format(valor);
     }
 }

Long é um tipo inteiro ( não decimal) . Use um tipo inteiro do banco de 64 bits. (Long, Integer, BigInt, etc… os nomes dependem do banco)

Use sempre o tipo certo para o dado.