Divisão entre números

Fala pessoal,
perguntinha básica…
Tenho o seguinte código:

        double value = 451.68;
        int scale = 1000000;
        double finalValue = value/scale;
        System.out.println("[finalValue: " + finalValue + "]");

Este código me retorna [finalValue: 4.5168E8]

Mas gostaria que me retornasse [finalValue: 0.00045168], como retornado na calculadora…

Como faço isso? Com format?

Valew!

Easy :slight_smile:

[code]double value = 451.68;
int scale = 1000000;
double finalValue = value/scale;

NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumIntegerDigits(10);
nf.setMinimumIntegerDigits(1);
nf.setMaximumFractionDigits(10);
nf.setMinimumFractionDigits(1);
nf.setGroupingUsed(true);

System.out.println("[finalValue: " + nf.format(finalValue) + “]”);
[/code]

ou assim…

import java.text.DecimalFormat;

public class Formato {
   public static void main( String[] args )
   {
      DecimalFormat fd = new DecimalFormat("0.00000000");//oito casas depois da
      double value = 451.68;                            //virgula
      int scale = 1000000;
      double finalValue = value/scale;

      System.out.println("[finalValue: " + fd.format( finalValue ) + "]");
   }
}

SAÍDA:
[finalValue: 0,00045168]

Estas duas soluções eu ja conhecia, queria saber uma maneira do próprio
valor (double), ser retornado pela operação aritmética…e não formatando
e depois a partir da string formatada, construir um double.

Mas para que você precisa do mesmo valor de maneira diferente se não é para fazer o output para o usuário?

System.out.printf("%f", finalValue);

Lembrando que você precisa usar J2SE 5.0 :slight_smile:

É verdade…só queria uma maneira menos trabalhosa…

Valew…é isso ae…

Daniel, quanto ao Java 5.0, foda hein!!!

Valew pessoal!

Fala pessoal !! Véspera de carvanal…e eu com a bucha aqui… heheeh!!
Pegando carona no tópico, pls help me.

Seguinte, tenho um valor em uma tabela que tenho que atualizar
em uma outra tabela, o que está acontecendo, é que na hora do insert ele arredonda uma casa. Ex:

=============================

// Busca valor na tabela1
String strSQL = " select valor from tabela1";
ResultSet rs = stm.executeQuery(strSQL);

String sql = "update tabela2 set valor = ? ";
PreparedStatement pstm = Conn.prepareStatement(sql);

// Imprime o valor na tela (teste somente)
System.out.println(rs.getDouble("valor ")); // **** Retorna 50.38 *****

// Seta o valor do paramtro
pstm.setDouble(1, rs.getDouble("valor "));

// Executa o update
pstm.executeUpdate(); // ****** insere 50.4 ******

=========================================

obs.: As funções de formatação pelo que percebi sempre convertem
para String, que no caso não vai me ajudar, pois o campo é Number na base…

Valeu pessoal… um abração !!

Luiz

Bandit,

O tipo de campo da sua base aceita duas casas decimais de precisão?

[]´s

Olá Vegetto,

Aceita sim… é um number(8,2) Oracle.

[quote=Bandit]Olá Vegetto,

Aceita sim… é um number(8,2) Oracle.

[/quote]

Só tente fazer um teste assim:

String sql = "update tabela2 set valor = " + rs.getDouble("valor ") + ";"; 

Ele continua inserindo arredondando?

Fiz o teste… mesma coisa. :frowning:

Estranho !!