Jump to content

[Resolvido] duvida - Convert.ToDouble


Recommended Posts

Posted

Boas pessoal,

estou aqui a aprender a programar em c# console. E deparei-me com um comando que não estou a entender o que faz!

namespace ConsoleApplication1
{
   class Program
   {
    static void Main(string[] args)
    {
	    // Variáveis 'utilizacao' consideradas como sendo do tipo Integer (números inteiros)
	    // Variável de saída 'valor' considerada como sendo do tipo Integer (número inteiro)
	    Double valorhora=0,utilizacao=0,total=0;
	    char cartao;

	    // Assumindo que o utilizador insere valores válidos
	    Console.WriteLine("Qual o valor hora? (valores em Euros)");
	    valorhora = Convert.ToDouble(Console.ReadLine());
	    Console.WriteLine("Qual a utilização? (valores em horas)");
	    utilizacao = Convert.ToDouble(Console.ReadLine());
	    Console.WriteLine("O cliente possui cartão de cliente? ('S' ou 's' para 'Sim' e 'N' ou 'n' para 'Não'");
	    cartao = Convert.ToChar(Console.ReadLine());

	    if (cartao == 'S' || cartao == 's') {
		    total = ((valorhora * utilizacao) - ((valorhora * utilizacao) * 0.1));
	    }
	    if (cartao == 'N' || cartao=='n') {
		    total = (valorhora * utilizacao);
	    }
		    Console.Write("Valor a pagar >>> {0} Euros.",total);
		    Console.ReadLine();
	    }
   }
}

Alguém me podia explicar o que o Convert.ToDouble(Console.ReadLine()); faz?

Sei que o float é para floating points de 32 bits e o double para 64, mas nao estou a associar este ToDouble..

Cumprimentos

Posted (edited)

O Convert.ToDouble neste caso pega o resultado do Console.ReadLine(), que é uma string, e converte em um double, é na verdade uma versão mais curta e equivalente do seguinte código:

string entrada=Console.ReadLine();

valorhora = Convert.ToDouble(entrada);

Edited by petvetbr

Fernando Lage Bastos - MCP/MCTS/MCPD

Posted (edited)

O Convert.ToDouble neste caso pega o resultado do Console.ReadLine(), que é uma string, e converte em um double, é na verdade uma versão mais curta e equivalente do seguinte código:

string entrada=Console.ReadLine();

valorhora = Convert.ToDouble(entrada);

Certo, entao essa logica é a mesma que:

variavel_qualquer = Int32.parse(string_qualquer)

certo?

So que esse converte a string (texto) para double que é 128-bit data type.

Corrige-me por favor se tiver errado!

Cumprimentos e obrg

Edited by hmrneves
Posted

Sim, isto mesmo, na verdade também existe o double.Parse(string), é que como você vai perceber, muitas vezes existe mais de uma forma de fazer algo no .NET. A vantagem do Convert.ToDouble sobre o double.Parse, é que o primeiro tem mais opções de entrada para conversão, aceita outros tipos como Object, bool, etc. Mas neste caso onde sabemos que a entrada é uma string, ambos são equivalentes.

Fernando Lage Bastos - MCP/MCTS/MCPD

Posted

Sim, isto mesmo, na verdade também existe o double.Parse(string), é que como você vai perceber, muitas vezes existe mais de uma forma de fazer algo no .NET. A vantagem do Convert.ToDouble sobre o double.Parse, é que o primeiro tem mais opções de entrada para conversão, aceita outros tipos como Object, bool, etc. Mas neste caso onde sabemos que a entrada é uma string, ambos são equivalentes.

Pois eu tentei substituir o Convert.ToDouble por somente double.parse e não dava, o visual studio dava logo erro ao tentar fazer debug.. Porque não entendo uma coisa, as variaveis usam DOUBLE , Double valorhora=0,utilizacao=0,total=0;, logo para que é q precisa de ser convertida?

Posted

como os valores estavam sendo entrados? com vírgulas como separador decimal? Se for isto é porque o Parse por padrão utiliza o padrão americano (ponto como separador), para utilizar vírgula é necessário usar uma outra sobrecarga do TryParse:

double.Parse(string s, IFormatProvider provider)

http://msdn.microsoft.com/en-us/library/t9ebt447.aspx

Fernando Lage Bastos - MCP/MCTS/MCPD

Posted

como os valores estavam sendo entrados? com vírgulas como separador decimal? Se for isto é porque o Parse por padrão utiliza o padrão americano (ponto como separador), para utilizar vírgula é necessário usar uma outra sobrecarga do TryParse:

double.Parse(string s, IFormatProvider provider)

http://msdn.microsoft.com/en-us/library/t9ebt447.aspx

Thanks ;D obrigadíssimo pela ajuda!

Ja agora tens em posse algum pdf jeitoso com as tabelas de operadores de c# e sua explicação/função?

Cumprimentos!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.