ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Erro na multiplicação de valores

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
LinoSus
Aprendiz
Aprendiz


Registrado: Terça-Feira, 12 de Julho de 2011
Mensagens: 224

MensagemEnviada: Ter Ago 30, 2011 5:46 pm    Assunto: Erro na multiplicação de valores Responder com Citação

Boa tarde amigos


Estou com o seguinte problema:
Preciso multiplicar os seguintes valores:


largura X Comprimento X Peso X Valor Unitario:
0,200 0,200 1,76 4,50 = 31,68 (trinta e um reais e sessenta e oito centavos)

Só que na hora que vou multiplicar estes valores ao invês de ficar assim
ocorre isto:

"0,2 0,2 1,76 4,50 =0.3168 "

Pq será?

Uso BD Access
Eu fiz assim o código:


datamodule1.QVendavalorUnit.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendaquadralargura.AsVariant *
datamodule1.QVendaquadracomprimen.AsVariant *
datamodule1.QVendapeso1.AsInteger;
datamodule1.QEstoquevalor_venda.AsCurrency;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Ter Ago 30, 2011 6:03 pm    Assunto: Responder com Citação

cara, o uso de AsVariant é uma merda....tenta usar tudo como currency
Outra coisa, a conte esta certinha, pega uma calculadora e faz ai pra ver..
Para ficar 31,68 tem que multiplicar o valor por 100, dai fica do jeito que vc quer...abraço...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Ago 30, 2011 6:08 pm    Assunto: Responder com Citação

Amigo, infelizmente deven estar sendo transformado em um float, assim vc tem perdas de acordo com as normas IEEE.

Neste caso nosso amigo tem completa razaao, use currency.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
LinoSus
Aprendiz
Aprendiz


Registrado: Terça-Feira, 12 de Julho de 2011
Mensagens: 224

MensagemEnviada: Ter Ago 30, 2011 7:44 pm    Assunto: Responder com Citação

Olá todos

Agora não aceita pontos mas o resultado ainda sai estranho ao invés de dar R$:3.750,00 DÁ:R$:375000,00!


nesse caso


largura 150 comprimento 50 Peso 50 Total= 375000,00!

E o pior que ja fiz com currency asvariant integer value se alguem souber me ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 30, 2011 8:09 pm    Assunto: Re: Erro na multiplicação de valores Responder com Citação

LinoSus escreveu:
Boa tarde amigos


Estou com o seguinte problema:
Preciso multiplicar os seguintes valores:


largura X Comprimento X Peso X Valor Unitario:
0,200 0,200 1,76 4,50 = 31,68 (trinta e um reais e sessenta e oito centavos)

Só que na hora que vou multiplicar estes valores ao invês de ficar assim
ocorre isto:

"0,2 0,2 1,76 4,50 =0.3168 "

Pq será?

Uso BD Access
Eu fiz assim o código:


datamodule1.QVendavalorUnit.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendaquadralargura.AsVariant *
datamodule1.QVendaquadracomprimen.AsVariant *
datamodule1.QVendapeso1.AsInteger;
datamodule1.QEstoquevalor_venda.AsCurrency;


Mais não esta certo esta conta ai?

Na calculadora se somar 0,2 * 0,2 * 1,76 * 4,50 o resultado não é 0,3168 ?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
LinoSus
Aprendiz
Aprendiz


Registrado: Terça-Feira, 12 de Julho de 2011
Mensagens: 224

MensagemEnviada: Ter Ago 30, 2011 8:33 pm    Assunto: Responder com Citação

Sim, esta dando certo mas gostaria que ficasse assim R$:31,68.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Ago 30, 2011 10:54 pm    Assunto: Responder com Citação

Não entendi sua questão, mas não basta multiplicar por 100, aliás estes seus calculos estao super estranhos.

Uma pergunta:
O metro Quadrado sai a quanto:
4,50

Esta conta sua está com alguma coisa errada, como é calculado isto:
m2

Vamos supor o material tenha as seguintes especificacoes:
1m de comprimento X 1m de largura e cada metro quadrado tenha 0,050 g (gramatura)

Neste caso se o meu preço é por kg, vamos supor uns R$ 20,00
Temos:
1x1x0,050X20,00=> Equivale a R$ 1,00;
Tirando a prova:
Como 0,050 é equivalente a 50gx20 = 1kg
Entao está correta nossa conta.

De uma olhada nestas contas sua aih que algo nao está batendo.


Pois talvez vc esteja falhando em algum ponto. Não seria metro linear?


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB