Ir para conteúdo

POWERED BY:

Arquivado

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

Rafael S. S.

Problemas com variáveis Double

Recommended Posts

Amigos estou com um problema ao efetuar algumas contas e comparações com números decimais

Trata-se de um script para gerar etiquetas em pdf, o erro acontece nessa parte do código:

 

formato=request.Form("formato") 'Estou enviando o valor "210;297" por um list)'
fil=request.Form("fileiras")
col=request.Form("colunas")
sup=request.Form("superior")
inf=request.Form("inferior")
esq=request.Form("esquerda")
dir=request.Form("direita")
alt=request.Form("altura")
lar=request.Form("largura")
hor=request.Form("horizontal")
ver=request.Form("vertical")

pagina=split(formato,";")
paginaW=pagina(0) 'largura da pagina'
paginaH=pagina(1) 'altura da pagina'

Wtotal  = (esq + (lar*col) + (hor*(col-1)) + dir) 'largura total dos valores informados para etiquetas'
Htotal  = (sup + (alt*fil) + (ver*(fil-1)) + inf) 'altura total dos valores informados para etiquetas'

testeW = paginaW - Wtotal 
testeH = paginaH - Htotal 
'estas duas verificações devem retornar entre -1 e 1 que é a tolerância de erro na medida final'

IF testeW > -1 and testeW < 1 and testeH > -1 and testeH < 1 THEN 'verifica se as medidas estão dentro da tolerância'
    'Ações aqui'
ELSE
    'Ações aqui'
END IF

 

O problema é que a verificação nunca retorna verdadeiro, e mandando escrever na tela o valor das variáveis tive o seguinte resultado:

 

Wtotal=210 (tipo double)
paginaW=210 (tipo string)

Htotal=297 (tipo double)
paginaH=297 (tipo string)

testeW=0
testeH=5,6843418860808E-14

 

O que me leva a crer que a verificação falha devido ao valor de testeH, e após várias tentativas não consigo obter o resultado correto que deveria ser sempre -1, 0 ou 1. Tentei converter paginaH para double antes de criar testeH mas o resultado foi o mesmo.

 

O que mais me intriga é que as operações e tipos de variáveis são exatamente as mesmas para altura e largura (testeW e testeH) porém o erro só ocorre com testeH sempre.

 

Aguem pode me ajudar com isto??

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

converta para double então

 

CDBL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu dei uma lida em alguns fóruns por fora sobre impressoa pimaco e coloquei esses valores e deu verdadeiro ve se serve para alguma coisa:

<%
formato="123;25,41"'request.Form("formato") 'Estou enviando o valor "210;297" por um list)'

fileiras="1"'request.Form("fileiras")

colunas="1"'request.Form("colunas")

superior="0"'request.Form("superior")

inferior="0"'request.Form("inferior")

esquerda="3"'request.Form("esquerda")

direita="0"'request.Form("direita")

altura="25,41"'request.Form("altura")

largura="120"'request.Form("largura")

horizontal="0"'request.Form("horizontal")

vertical="0"'request.Form("vertical")

pagina=split(formato,";")
paginaLargura=pagina(0) 'largura da pagina'
paginaAltura=pagina(1) 'altura da pagina'

Larguratotal  = (esquerda + (largura*colunas) + (horizontal*(colunas-1)) + direita) 'largura total dos valores informados para etiquetas'

Alturatotal  = (superior + (altura*fileiras) + (vertical*(fileiras-1)) + inferior) 'altura total dos valores informados para etiquetas'

testeLargura = paginaLargura - Larguratotal 
testeAltura = paginaAltura - Alturatotal 
'estas duas verificações devem retornar entre -1 e 1 que é a tolerância de erro na medida final'

Response.write("Largura total :"&Larguratotal&"<br />")
Response.write("Altura total :"&Alturatotal&"<br />")

Response.write("pagina Largura :"&paginaLargura&"<br />")
Response.write("pagina Altura :"&paginaAltura&"<br />")

Response.write("teste Largura :"&testeLargura&"<br />")
Response.write("teste Altura :"&testeAltura&"<br />")

IF testeLargura > -1 and testeLargura < 1 and testeAltura > -1 and testeAlrtura < 1 THEN 'verifica se as medidas estão dentro da tolerância'
   Response.write("Verdadeiro") 'Ações aqui'
ELSE
   Response.Write("Falso") 'Ações aqui'
END IF
%>

Espero ajudar

até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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