Jump to content

Recommended Posts

Posted

Boas tardes a todos.

Estou a iniciar-me em C# e estou a criar um pequeno programa em console application em que pede um valor monetário (decimal) mas quando inserimos um . (ponto) em vez de uma , (virgula) não faz a divisão dos cêntimos.

Ex. quando insiro 40,00 o valor aparece 40,00 mas quando insiro 40.00 aparece 4000,00.

Gostaria de saber se há maneira de contornar esta situação.

Cumprimentos

JonasTOOL

Posted

Aqui está o código:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Experiencia
{
    class Program
    {
        static void Main(string[] args)
        {
            decimal preco = 0;

            Console.Write("Qual o preço do produto: ");
            string SPreco = Console.ReadLine();
            while (!decimal.TryParse(SPreco, out preco) || preco < 1)
            {
                Console.Write("Preço incorrecto, introduza novamente: ");
                SPreco = Console.ReadLine();
            }
            Console.WriteLine("Preço: " + preco);
            Console.Read();

            
        }
    }
}
Posted

Tente mudar para algo assim:

...
            Console.Write("Qual o preço do produto: ");
            string SPreco = Console.ReadLine();
            var style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
            var culture = CultureInfo.CreateSpecificCulture("pt-PT");
            while (!decimal.TryParse(SPreco,style, culture, out preco) || preco < 1)
            {
.....

Fernando Lage Bastos - MCP/MCTS/MCPD

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.