Uma Classe Para Truncar Valores Double

3 respostas
jonasjgs2

Eu uso esta classe para trabalhar com valores double...
se alguem achar interessante pode usa-la
se alguem tiver uma maneira melhor... aceito sugestoes...

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package objetos;

import java.text.DecimalFormat;

/**
 *
 * @author Admin
 */
public class TruncarValor {
    public static double Truncar(double valor,int qtddec) {
        DecimalFormat df = new DecimalFormat();
        
        df.applyPattern("0."+String.format("%"+(qtddec+1)+"s","").replaceAll(" ","0"));
        String s = df.format(valor);
        s = s.substring(0, s.length()-1).replaceAll(",", ".");
        return Double.parseDouble(s);
    }
    
    public static void main (String[] args) {
        System.out.println(TruncarValor.Truncar(100.129, 2));
    }
}

3 Respostas

E

Nossa, muito complicado

E

Vou explicar porque arredondar ou truncar valores double normalmente não é a melhor solução (sendo a melhor solução normalmente fazer isso só na hora de visualizar os valores).

É que se você fizer isso (arredondar ou truncar para um número N de casas decimais) nem sempre se garante que isso vá funcionar do jeito que você espera. Por exemplo, você pensaria que o número deveria ser arredondado para 1.96 mas na hora de você imprimi-lo, ele aparece como 1.95999999999987 e não há santo que dê jeito nisso, devido ao fato de o Java usar números de ponto flutuante em binário (como é a representação em hardware do seu computador).

pmlm

Sabes que existe isto?

Criado 5 de abril de 2013
Ultima resposta 5 de abr. de 2013
Respostas 3
Participantes 3