Como Utilizar Números Reais em Java

6 respostas
S
:oops:  Bom, estou com MUUUIIIIITTTTTTTAAAAAAAAASSSSSSSSSSSS dúvidas, não consigo utilizar números reais em Java, quero fazer uma subtração simples como:

double f_valor = 0.35;

f_valor = f_valor ? 0.25;

O resultado de f_valor deveria ser 0.10, mas não está dando certo, o que devo fazer ???
 tentei usar: DecimalFormat duasCasas = new DecimalFormat(0.00);

System.out.println(duasCasas.format(f_valor));

Mas não adiantou, será que alguém pode me ajudar
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.text.*;

public class Troco
{
    public static void main(String args[])
    {
        String valor;
        double f_valor = 0, result = 0;
        int quant1 = 0, quant50 = 0, quant25 = 0, quant10 = 0, quant05 = 0, quant01 = 0;
        
       
       
		valor = JOptionPane.showInputDialog("Entre com o VALOR");
       	f_valor = Double.parseDouble(valor);
       	System.out.println("R$: "+f_valor);
		
		//while (f_valor >= 0.001)
		//{
		
			System.out.print("Resultado Parcial: ");
			while (f_valor >= 1)
			{
				DecimalFormat duasCasas = new DecimalFormat("0.00");
				System.out.println(duasCasas.format(f_valor));
				System.out.print(" - ");
				f_valor = f_valor - 1;
				quant1++;
				//f_valor = result;
				//System.out.print(result+", ");
			}System.out.println(" "); System.out.println(" QUANTIDADE DE MOEDAS DE R$1,00: "+quant1+"\n");
			
			
			System.out.print("Resultado Parcial: ");
			if ((f_valor >= 0.50) && (f_valor < 1))
			{
				DecimalFormat duasCasas = new DecimalFormat("0.00");
				System.out.println(duasCasas.format(f_valor));
				System.out.print(" - ");
				f_valor = f_valor - 0.50;
				quant50++;
				//f_valor = result;
				//System.out.print(result+", ");
			}System.out.println(" "); System.out.println(" QUANTIDADE DE MOEDAS DE R$0.50: "+quant50+"\n");
	    
			System.out.print("Resultado Parcial: ");
			if ((f_valor >= 0.25) && (f_valor < 0.50))
			{
				DecimalFormat duasCasas = new DecimalFormat("0.00");
				System.out.println(duasCasas.format(f_valor));
				System.out.print(" - ");
				f_valor = f_valor - 0.25;
				quant25++;
				//f_valor = result;
				//System.out.print(result+", ");
			}System.out.println(" "); System.out.println(" QUANTIDADE DE MOEDAS DE R$0.25: "+quant25+"\n");
          
			
			System.out.print("Resultado Parcial: ");
			while ((f_valor >= 0.10) && (f_valor < 0.25))
		 	{
				DecimalFormat duasCasas = new DecimalFormat("0.00");
				System.out.println(duasCasas.format(f_valor));
				System.out.print(" - ");
				f_valor = f_valor - 0.10;
				quant10++;
				//f_valor = result;
				//System.out.print(result+", ");
		 	}System.out.println(" "); System.out.println(" QUANTIDADE DE MOEDAS DE R$0.10: "+quant10+"\n");    
			
			
			System.out.print("Resultado Parcial: ");
			if ((f_valor >= 0.05) && (f_valor < 0.09))
		 	{
		 		DecimalFormat duasCasas = new DecimalFormat("0.00");
				System.out.println(duasCasas.format(f_valor));
				System.out.print(" - ");
				f_valor = f_valor - 0.05;
				quant05++;
				//f_valor = result;
				//System.out.print(result+", ");
		 	}System.out.println(" "); System.out.println(" QUANTIDADE DE MOEDAS DE R$0.05: "+quant05+"\n");
        
 			
			System.out.print("Resultado Parcial: ");
			while ((f_valor >= 0.01) && (f_valor < 0.05))
		 	{
		 		DecimalFormat duasCasas = new DecimalFormat("0.00");
				System.out.print(duasCasas.format(f_valor));
				System.out.print(" - ");
				f_valor = f_valor - 0.01;
				//System.out.println(duasCasas.format(f_valor));
				quant01++;
				//f_valor = result;
				//System.out.print(result+", ");
		 	}System.out.println(" "); System.out.println(" QUANTIDADE DE MOEDAS DE R$0.01: "+quant01+"\n");
			
      //}
        System.exit(0);
    }

}

6 Respostas

D

qual a mensagem de erro…ou qual o resultado que ele dah…
por exemplo: 0.35-0.10 = resulta em que?

C

Eu tenho essa aplicacao feita em algoritmo, mas agora to na facul, na madruga eu te mando ela feita em java…

E so esperar…

Abracao e te +

C

Sheila

Como eu prometi ta ai o aplicativo…
Acho q e esse q vc quer!!!

// Troco.java
/** Aplicativo que calcula o o menor número de
*  notas e/ou moedas a ser dado de troco.
*/

import javax.swing.JOptionPane;

public class Troco {
   public static void main( String[] srgs ) {

      String ent_pagar;
      String ent_recebeu;

      int nota10;
      int nota1;
      int moeda10;
      int moeda1;

      double pagar;
      double recebeu;
      double troco;

      ent_pagar = JOptionPane.showInputDialog( " Digite o valor a ser pago " );
      pagar = Double.parseDouble( ent_pagar );

      ent_recebeu = JOptionPane.showInputDialog( " Digiteo o valor recebido " );
      recebeu = Double.parseDouble( ent_recebeu );

      if( recebeu <= pagar ) {
         if( recebeu < pagar ) {
            JOptionPane.showMessageDialog( null,
               " Está faltando Dinheiro\n " + " Por Favor arrume mais ",
               " ! Valor Recebido menor q o valor a ser pago ! ",
               JOptionPane.WARNING_MESSAGE );
         }
         else {
            JOptionPane.showMessageDialog( null,
               " Divida Liquidada ", " OBRIGADO ",
               JOptionPane.INFORMATION_MESSAGE );
         }
      }
      else {
         troco = recebeu - pagar;
         JOptionPane.showMessageDialog( null,
            " O troco é de " + troco, " VALOR DO TROCO ",
            JOptionPane.INFORMATION_MESSAGE );
         if( troco >= 10 ) {
            nota10 = (int) (troco / 10);
            troco = troco - ( nota10 * 10 );
            JOptionPane.showMessageDialog( null,
               " O total em notas de 10 é " + nota10, " R$ 10,00 ",
               JOptionPane.INFORMATION_MESSAGE );
         }
         if( troco >= 1 ) {
            nota1 = (int) troco;
            troco = troco - nota1;
            JOptionPane.showMessageDialog( null,
               " O total em notas de 1 é " + nota1, " R$ 1,00 ",
               JOptionPane.INFORMATION_MESSAGE );
         }
         if( troco >= 0.5 ) {
            troco = troco - 0.5;
            JOptionPane.showMessageDialog( null,
               " O total de moedas de 50 centavos = 1", " R$ 0,50 ",
               JOptionPane.INFORMATION_MESSAGE );
         }
         if( troco >= 0.1 ) {
            moeda10 = (int) (troco / 10);
            troco = troco - ( moeda10 * 0.1 );
            JOptionPane.showMessageDialog( null,
               " O total de moedas de 10 centavos é " + moeda10, " R$ 0,10 ",
               JOptionPane.INFORMATION_MESSAGE );
         }
         if( troco >= 0.05 ) {
            troco = troco - 0.05;
            JOptionPane.showMessageDialog( null,
            " O total de moedas de 5 centavos = 1", " R$ 0,05 ",
               JOptionPane.INFORMATION_MESSAGE );
         }
         if( troco >= 0.01 ) {
            moeda1 = (int) (troco / 0.01);
            JOptionPane.showMessageDialog( null,
               " O total de moedas de 1 centavo é " + moeda1, " R$ 0,01 ",
               JOptionPane.INFORMATION_MESSAGE );
         }
      } // fim do else
      
      System.exit( 0 ); // fecha o painel
      
   } // fim do metodo main
} // final da classe

E so compilar o rodar…

espero q tenha ajudado…

Abracao e te +

A

vc tem que declarar uma variável double assim

'double num = 0.0f ' ou 'num = (float)0.0'
e não 'num = 0' , tem que indicar que é um número real que vc está atribuindo à variável

exemplo:
double n1 = 0.1f; 
double n2 = 0.25f;

double n3 = n1 + n2:

System.out.println("\n\tResultado: " + n3);

vai aparecer 0.35
até mais

S

Obrigada pela força, mas infelizmente não consegui tirar completamente a minha dúvida sobre NÚMEROS REAIS EM JAVA, por isso vou estudar mais um pouquinho.
Um Abraço
Sheyla_DF :fucando:

M

bem… tu só precisa declarar com um “f” no final, se tu for atribuir a um float, no caso de double, nao se faz neceessário, … em java todo numero real é um double, se tu tentar algo como:

float f = 3.0;

vai dar erro… pq o container de um float é menor q de um double… o compilador reclama de uma possivel imprecisão… mas se tu faz:

float f = 3.0f;

…ai tu ta explicitamente dizendo q o 3.0 é um float, e não um double!, se não me engano o float é de 31bits e o double é 64bits… e se tu colocar assim:

double d = 3.0;

não vai dar erro algum… pq 3.0 ja é implicitamente um double… espero ter dado uma clareada… hehehe :slight_smile:

Criado 7 de junho de 2004
Ultima resposta 12 de jun. de 2004
Respostas 6
Participantes 5