 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
LinoSus Aprendiz

Registrado: Terça-Feira, 12 de Julho de 2011 Mensagens: 224
|
Enviada: Ter Ago 30, 2011 5:46 pm Assunto: Erro na multiplicação de valores |
|
|
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 |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Ter Ago 30, 2011 6:03 pm Assunto: |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Ago 30, 2011 6:08 pm Assunto: |
|
|
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 |
|
 |
LinoSus Aprendiz

Registrado: Terça-Feira, 12 de Julho de 2011 Mensagens: 224
|
Enviada: Ter Ago 30, 2011 7:44 pm Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Ago 30, 2011 8:09 pm Assunto: Re: Erro na multiplicação de valores |
|
|
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 |
|
 |
LinoSus Aprendiz

Registrado: Terça-Feira, 12 de Julho de 2011 Mensagens: 224
|
Enviada: Ter Ago 30, 2011 8:33 pm Assunto: |
|
|
Sim, esta dando certo mas gostaria que ficasse assim R$:31,68. |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Ago 30, 2011 10:54 pm Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|