Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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...
Já escrevi, vou repetir - alguns números não existem em binário. Não há 0,1, não há 0,3 e muitos outros. Não importa quantas vezes você escreva o dobro val = NormalizeDouble(0,1434, 1), você nunca receberá 0,1 só porque não existe tal número.
Por exemplo, os números são representados da seguinte forma:
0,1 = 0,100000000000000000001
0,2 = 0,20000000000000001
0,3 = 0,2999999999999999999999999
0,4 = 0,40000000000000000000002
0,6 = 0,59999999999999999999998
mas
0,125 = 0,125
0,25 = 0,25
0,5 = 0,5
Se isto for muito perturbador, você precisa arredondar ou escrever sua própria bicicleta para representar números fracionários (pode haver algumas bibliotecas, não interessadas) que não usarão o fpu.
E não são adicionados rabos durante a conversão em cordel, eles estão lá inicialmente.
por isso resolvi minha pergunta, podemos encerrar o assunto
solução: você tem que forçar o arredondamento, mesmo após a normalização
muito possivelmente... mas em termos do resultado final - há caudas!
...
Não há caudas após a normalização.
Acho que você está enganando o homem. O que você quer dizer com "não há rabos após a normalização"? Não pode haver caudas somente na corda que recebemos de um número e arredondamos o valor (arredondado já na corda, não em dobro). Mas há caudas após a NormalizeDouble().
Solução errada. Ao arredondar, você tem que multiplicar, arredondar, dividir. Após a última divisão, o número será não-normalizado.
O que você quer dizer com "normalização"? Stringo estava dizendo aqui que o algoritmo é algo assim:
Acho que você está enganando o homem. O que você quer dizer com "não há rabos após a normalização"? Não pode haver caudas somente na corda que recebemos de um número e arredondamos o valor (arredondado já na corda, não em dobro). Mas depois de NormalizeDouble() há caudas.
O que você quer dizer com "normalização"? Stringo disse aqui que o algoritmo é algo parecido com isto:
Estou lhe fazendo uma pergunta específica e você está derramando água sobre mim. Como é normal explicar e argumentar seu ponto de vista?
Ler os livros didáticos e a documentação em voz alta ou o quê? Ou leia o dicionário em voz alta, sobre a palavra "aproximadamente"?