Here you can find the source of multiplyMoeda(BigDecimal val1, BigDecimal val2)
public static BigDecimal multiplyMoeda(BigDecimal val1, BigDecimal val2)
//package com.java2s; /**/*from ww w . j a v a 2 s.c om*/ * Ecf4J - framework Java para intera??o com equipamentos de Automa??o Comercial * * Direitos Autorais Reservados (c) 2009-2010 ecf4j.org * * Autores: Agner Ger?nimo Munhoz, * Pablo Henrique Fassina, * Rafael Pasqualini de Freitas, * Wellington Carvalho * * Voc? pode obter a ?ltima vers?o desse arquivo na pagina do Ecf4J.org * dispon?vel em: <http://www.ecf4j.org> 21/09/2009. * * Este arquivo ? parte da framework Ecf4J * * Ecf4J ? um framework livre; voc? pode redistribui-lo e/ou * modifica-lo dentro dos termos da Licen?a P?blica Geral Menor GNU como * publicada pela Funda??o do Software Livre (FSF); na vers?o 2.1 da * Licen?a. * * Este framework ? distribuido na esperan?a que possa ser util, * mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUA??O a qualquer * MERCADO ou APLICA??O EM PARTICULAR. Veja a * Licen?a P?blica Geral GNU para maiores detalhes. * * Voc? deve ter recebido uma c?pia da Licen?a P?blica Geral Menor GNU * junto com este framework, se n?o, escreva para a Funda??o do Software * Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ import java.math.BigDecimal; public class Main { public static int decMoeda = 2; public static int roundingMode = BigDecimal.ROUND_DOWN; public static BigDecimal multiplyMoeda(BigDecimal val1, BigDecimal val2) { if (val1.scale() < val2.scale()) { BigDecimal aux = (val1 != null ? val1 : newMoeda()); aux = aux.setScale(decMoeda, roundingMode); return aux.multiply((val2 != null ? val2 : newMoeda())).setScale(decMoeda, roundingMode); //return aux.multiply(val2, new MathContext(decMoeda, roundingMode)).setScale(decMoeda, roundingMode); } else { BigDecimal aux = (val2 != null ? val2 : newMoeda()); aux = aux.setScale(decMoeda, roundingMode); return aux.multiply((val1 != null ? val1 : newMoeda())).setScale(decMoeda, roundingMode); //return aux.multiply(val2, new MathContext(decMoeda, roundingMode)).setScale(decMoeda, roundingMode); } } /** * newMoeda - Cria um novo BigDecimal em escala de moeda com valor 0 * @return BigDecimal */ public static BigDecimal newMoeda() { return new BigDecimal("0").setScale(decMoeda, roundingMode); } /** * newMoeda - Cria um novo BigDecimal em escala de moeda com valor val * @param val * @return BigDecimal */ public static BigDecimal newMoeda(int val) { return BigDecimal.valueOf(val).setScale(decMoeda, roundingMode); } /** * newMoeda - Cria um novo BigDecimal em escala de moeda com valor val * @param val * @return BigDecimal */ public static BigDecimal newMoeda(long val) { return BigDecimal.valueOf(val).setScale(decMoeda, roundingMode); } /** * newMoeda - Cria um novo BigDecimal em escala de moeda com valor val * @param val * @return BigDecimal */ public static BigDecimal newMoeda(double val) { return BigDecimal.valueOf(val).setScale(decMoeda, roundingMode); } /** * newMoeda - Cria um novo BigDecimal em escala de moeda com valor val * @param val * @return BigDecimal */ public static BigDecimal newMoeda(String val) { if (!val.isEmpty()) { return newMoeda(StringToDouble(val)); } else { return newMoeda(); } } public static double StringToDouble(String str) { str = str.replaceAll(",", "."); if (!str.isEmpty()) { return Double.parseDouble(str); } else { return 0; } } }