Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

11closed

Qual a melhor forma de gravar valores financeiros com dizimas

Recommended Posts

Olá, boa tarde! 

Estou com uma duvida, que pelo o que pesquisei, é bastante discutida nas comunidades de programadores e cada um fala uma coisa, por tanto vim até aqui para tentar chegar a uma conclusão.

 

Gostaria de gravar valores financeiros no BD de alguma forma que não traga problemas futuros, por causa de possiveis arredondamentos automaticos.

Quero saber qual o melhor mecanismo para gravar no campo de valores financeiros, valores com decimais e dizimas, exe: 0.2308, 128.997, 1.28989 ..etc independentemente da quantidade de numeros no dizimas, eu preciso saber a quantidade exata.

 

Obrigado, no aguardo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro puramente de forma matemática definindo: dizima periodica é um numero infinito gerado por uma fração, portanto você nunca conseguirá armazenar ela exata na forma decimal, você pode ocupar o espaço inteiro do seu HD armazenando ela e não vai ser suficiente pois é infinita. você pode armazenar ela completa na forma fracionária e quando precisar usar extrai da fração, no resultado será arredondado.

 

Quanto ao resto.

 

O sistema financeiro prevê apenas 2 dígitos decimais, postos de gasolina por exemplo usam 3 digitos, mas na pratica o 2,899 é 2,90 aquilo é só marketing.

 

Até em engenharia espacial chega um momento que as casas decimais se tornam desprezíveis e se arredonda.

 

Uma vez que o sistema monetário prevê 2 digitos decimais, não vejo problema nenhum em ele registrar apenas 2 decimais. 

 

Se seu produto é calculado em mais decimais como no exemplo do posto utilize 3 casas, no final vai acabar virando 2. Utilize a quantidade decimal que seu produto demanda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valores financeiros que dizer dinheiro , a menor divisão de dinheiro é o centavo , logo até a segunda casa decimal.

Em alguns casos como venda de combustível a lei permite usar o milésimo mas não é preço e sim um multiplicador , no final se paga até o centavo.

Você deve ver com o usuário do sistema ou na legislação como tratar , restos , residuos etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá pessoal, bom, primeiramente obrigado pela  resposta :) 

 

O sistema que estou criando tem uma divisão de lucros monetários, e em alguns casos essas divisão de lucros é bem pequena, mas mesmo assim eu preciso contabiliza-la, vou tentar explicar da maneira mais rapida.

Exemplificando: Em uma determinada ação financeira do script gera um valor total de $1,30 o script busca 10% desse valor $0,13 e depois esse valor é distribuído para varios campos, sendo que cada campo tem sua própria % sobre esse pequeno valor a buscar.

 

campo1 0,369000000 % $0,000479700000000000
campo2 1,845000000 % $0,002398500000000000
campo3 6,150000000 % $0,007995000000000000
campo4 12,669000000 % $0,016469700000000000
campo5 6,519000000 % $0,008474700000000000
campo6 61,500000000 % $0,079950000000000000
campo7 4,428000000 % $0,005756400000000000
campo8 6,519000000 % $0,008474700000000000

 

Esse foi só um exemplo de como deve funcionar. 

No MYSQL quais TIPO de campos seria mais adequado para utilizar e com quais tamanho? (DECIMAL, double ou float)

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.