NormalizarDuplo paradoxo - página 10

 
barabashkakvn:
Tudo vem aos poucos. Primeiro é preciso lembrar que as frases são escritas em letras maiúsculas e que o estilo de verso cortado não é de forma alguma adequado para um fórum. Em seguida, ela funcionará por si mesma com a normalização e indexação do zero.

Tenho estado esperando por este comentário )))))

 

não há nada mais natural do que digitar rápido em um chat room style - uma linha

é tão natural quanto contar a partir de 1.

e arredondando um número para que seja arredondado da mesma forma.

Vamos lá, onde está seu fluxo de comentários sarcásticos cheios de formalismo?

A vida é mais do que pontos e vírgulas devidamente espaçados e formatos binários.

é o fluxo da sensação e é suposto ser bonito.

é liberdade e criatividade.

qual é a sua resposta a isto?

 
transcendreamer:

Vocês estão todos gozando comigo, não estão?

Eu só precisava digitar um número fracionário sem lixo

e você está provando que estou errado.

O mql não é um fim em si mesmo, é uma ferramenta.

Acho que há algumas coisas óbvias, como - se você colocar um número em uma variável, você imprime como você coloca...

não importa como é organizado internamente ou como o número é armazenado, é o nível do sistema

e é óbvio que essas caudas são um disparate e uma falha no nível de aplicação - não amigável

Mas aqui novamente temos uma piada de programador: "isto não é um bug, isto é uma característica".

estas piadas não apareceram para nada, não para nada ))))))))

NormalizeDouble() é necessário ao enviar os parâmetros calculados como preços em ordens comerciais. Você pode enviar os preços Ask e Bid sem normalização, pois já estão normalizados para a capacidade de dígitos necessária. Se você calcular os preços, por exemplo para um Bid-stopLoss*Point, então esta expressão requer normalização. Os preços dos pedidos pendentes também são os mesmos: você os calcula de antemão, portanto, eles devem ser normalizados.

Quando você compara dois números reais, você precisa comparar sua diferença normalizada com zero ou com o valor mínimo.

Quando você quiser ver o que calculou, use DoubleToString() com a precisão que você deseja. IntegerToString() com os parâmetros que você deseja.

Isto é algo que você deve entender e aprender.

 
transcendreamer:

não há nada mais natural do que digitar rápido em um chat room style - uma linha

é tão natural quanto contar a partir de 1.

e arredondando um número para que seja arredondado da mesma forma.

Vamos lá, onde está seu fluxo de comentários sarcásticos cheios de formalismo?

A vida é mais do que pontos e vírgulas devidamente espaçados e formatos binários.

é o fluxo de sentimento e é suposto ser bonito.

é liberdade e criatividade.

o que você diz a isso?

A liberdade... e alguém está te segurando à força?

Criatividade ... crie, escreva você mesmo seus próprios invólucros para todas as funções MK e desfrute da beleza.

 
artmedia70:

NormalizeDouble() é necessário ao enviar os parâmetros calculados como preços em ordens comerciais. Você pode enviar os preços Ask e Bid sem normalização, pois eles já estão normalizados para a capacidade de dígitos requerida. Se você calcular os preços, por exemplo para um Bid-stopLoss*Point, então esta expressão requer normalização. Os preços dos pedidos pendentes também são os mesmos: você os calcula de antemão, portanto, eles devem ser normalizados.

Quando você compara dois números reais, você precisa comparar sua diferença normalizada com zero ou com o valor mínimo.

Quando você quiser ver o que calculou, use DoubleToString() com a precisão que você deseja. IntegerToString() com parâmetros que você precisa.

Isto é algo que você deve entender e assimilar melhor.

Sim, eu entendo muito bem, você não pode enviar um pedido 1,234567 se a cotação for um número de 5 dígitos.

sobre a comparação de números duplos eu vi referências a..... e é terrível

mas tanto quanto sei é seguro comparar A>B, desde que A e B sejam visivelmente diferentes

somente se se verificar que se, por exemplo, eu definir explicitamente A=1,23456 e B=1,23456 e se(A==B) der falso, então isso já é um crime

 
artmedia70:

NormalizeDouble() é necessário ao enviar os parâmetros calculados como preços em ordens comerciais. Você pode enviar os preços Ask e Bid sem normalização, já que eles já estão normalizados para a capacidade de dígitos requerida. Se você calcular os preços, por exemplo para um Bid-stopLoss*Point, então esta expressão requer normalização. Os preços dos pedidos pendentes também são os mesmos: você os calcula de antemão, portanto, eles devem ser normalizados.

Quando você compara dois números reais, você precisa comparar sua diferença normalizada com zero ou com o valor mínimo.

Quando você quiser ver o que calculou, use DoubleToString() com a precisão que você deseja. IntegerToString() com parâmetros que você precisa.

Isto é algo que você deve entender e aprender.

impressão e alerta são tortos - eu já entendi isso
 

O que me incomoda é que quando calculo um número fracionário, o normalizo, o escrevo em uma variável, depois o leio e o normalizo novamente, recebo caudas

por exemplo

basis[0]=NormalizeDouble(sum_A,2);

GlobalVariableSet("Equity-"+portfolio_id,basis[0]); 

...

current=NormalizeDouble(GlobalVariableGet("Equity-"+portfolio_id),2);

text = "Positions synchronized at " + current + " for portfolio: " + portfolio_name;

if(!automatic) MessageBox(text,""); else Print(text);

Agora eu mudei para

text = "Positions synchronized at " + DoubleToStr(current,2) + " for portfolio: " + portfolio_name;

if(!automatic) MessageBox(text,""); else Print(text);

e não parece haver caudas, ufa, ufa, ufa...

 

mais precisamente - na versão original, era (string)corrente

ou seja, a conversão de um número normalizado de caudas esquerdas

às vezes (nem sempre)

 

o problema de comparar duas duplas surge se, por exemplo, um número é uma constante e o outro é calculado dividindo/multiplicando

 

De qualquer forma, obrigado novamente por perder seu tempo com um humanitário sem esperança, se estou incomodando alguém, desculpe novamente, estou apenas dizendo o que penso sem malícia.

Entretanto, boas notícias.