hmrneves Posted September 21, 2012 at 08:03 PM Report #476139 Posted September 21, 2012 at 08:03 PM 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
petvetbr Posted September 21, 2012 at 08:07 PM Report #476141 Posted September 21, 2012 at 08:07 PM (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 September 21, 2012 at 08:10 PM by petvetbr Fernando Lage Bastos - MCP/MCTS/MCPD
hmrneves Posted September 21, 2012 at 08:15 PM Author Report #476143 Posted September 21, 2012 at 08:15 PM (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 September 21, 2012 at 08:16 PM by hmrneves
petvetbr Posted September 21, 2012 at 08:21 PM Report #476145 Posted September 21, 2012 at 08:21 PM 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
hmrneves Posted September 21, 2012 at 08:23 PM Author Report #476146 Posted September 21, 2012 at 08:23 PM 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?
petvetbr Posted September 21, 2012 at 08:31 PM Report #476148 Posted September 21, 2012 at 08:31 PM 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
hmrneves Posted September 21, 2012 at 08:35 PM Author Report #476150 Posted September 21, 2012 at 08:35 PM 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!
petvetbr Posted September 21, 2012 at 08:44 PM Report #476152 Posted September 21, 2012 at 08:44 PM Procure no MSDN, lá tem tudo que você possa querer sobre .NET e C#: http://msdn.microsoft.com/en-us/library/6a71f45d.aspx Fernando Lage Bastos - MCP/MCTS/MCPD
hmrneves Posted September 21, 2012 at 08:56 PM Author Report #476155 Posted September 21, 2012 at 08:56 PM Procure no MSDN, lá tem tudo que você possa querer sobre .NET e C#: http://msdn.microsoft.com/en-us/library/6a71f45d.aspx Obrigadíssimo mais uma vez 😉
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now