![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Matemática. Grau 6. Livro-texto. Nikolsky S.M., Potapov M.K. Moscou: 2012. - 256 с
Arredondamento.
Que tema acalorado este acabou por ser. O MT4 parece funcionar corretamente com os arredondamentos.
Eu quis dizer paraNormalizeDouble(0.055,2) não para arredondar o número"0.055" para "0.06", mas para apará-lo para "0.05".
Estou tendo problemas para entender estas funções MKL. Eu realmente não entendo porque "1.0015223567" deve ser arredondado usando NormalizeDouble, se tudo o que você quer é levar o número BORROWN para o lugar certo.
Ou seja, para NormalizarDuplo(1.001526789, 5) resultaria em "1.00152". Não precisa ser arredondadopara "1,00153". Deve haver a função RoundDouble para isso =)
Isso é possível? Ou é necessário arredondá-lo o tempo todo e obter os números errados?
É melhor você já se decidir. É um arredondamento:
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Arredondamento de números em MT4 via NormalizeDouble
Roman Starinskij, 2016.01.21 10:03
Olá. Você pode me dizer qual é o problema?
Por que a função NormalizeDuplo(0,055,2) arredonda o número "0,055" para "0,06"?
Não é uma função de arredondamento de fração.
Não tem:
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Arredondamento de números em MT4 via NormalizeDouble
Roman Starinskij, 2016.01.25 14:30
Que tema acalorado este acabou por ser. O MT4 parece funcionar corretamente com o arredondamento.
Eu quis dizerNormalizeDouble(0,055,2) não para arredondar o número"0,055" para "0,06", mas para apará-lo para "0,05".
Estou tendo problemas para entender estas funções MKL. Eu realmente não entendo porque "1.0015223567" deve ser arredondado com a função NormalizeDouble, se tudo o que você quer é levar o número DIRECT para o lugar certo.
Ou seja, para NormalizarDuplo(1.001526789, 5) resultaria em "1.00152". Não precisa ser arredondadopara "1,00153". Deve haver a função RoundDouble para isso =)
Isso é possível? Ou é necessário arredondá-lo o tempo todo e obter números que você não quer?
E em nome da experimentação:
Que tema acalorado este acabou por ser. O MT4 parece funcionar corretamente com o arredondamento.
Eu quis dizer paraNormalizeDouble(0.055,2) não para arredondar o número"0.055" para "0.06", mas para apará-lo para "0.05".
Estou tendo problemas para entender estas funções MKL. Eu realmente não entendo porque "1.0015223567" deve ser arredondado com a função NormalizeDouble, se tudo o que você quer é levar o número BORROWN para o lugar certo.
Ou seja, para NormalizarDuplo(1.001526789, 5) resultaria em "1.00152". Não precisa ser arredondadopara "1.00153". Deve haver a função RoundDouble para isso =)
Isso é possível? Ou você precisa arredondar o tempo todo e obter números que você não quer?
Se você precisa aparar, então aparar; se você precisa arredondar, então arredondar. A função NormalkizeDouble() é o que você mais freqüentemente precisa.
Por que você acha que RoundDouble() deve ser usado em vez de NormalizeDouble()? Você criou este mundo? É correto que uma bola esteja rolando e um quadrado tenha quatro cantos?
Que tema acalorado este acabou por ser.
Isto porque o autor não lê a documentação lingüística e não escuta o que lhe é dito.
O seguinte comportamento de divisão e arredondamento das frações é um pouco obscuro.
Há 2 equações:
0.06-0.02 = 0.03999999999999999
0.06-0.024 = 0.036
Usando a função NormalizeDouble recomendada, obtemos estes resultados:
0.03999999999999999 = 0.04
0.036 = 0.04
No primeiro exemplo, precisamos realmente obter o valor 0,04, mas no segundo precisamos 0,03 (é assim que funciona uma calculadora normal).
NormalizeDouble deve ser usado porque são devolvidas frações que não estão completas, mas no segundo caso, a função retorna valores incorretos, e também não é possível não utilizá-la para o primeiro exemplo.
O seguinte comportamento de divisão e arredondamento das frações é um pouco obscuro.
Há duas equações:
0.06-0.02 = 0.03999999999999999
0.06-0.024 = 0.036
Usando a função NormalizeDouble recomendada, obtemos estes resultados:
0.03999999999999999 = 0.04
0.036 = 0.04
No primeiro exemplo, precisamos realmente obter o valor 0,04, mas no segundo precisamos 0,03 (é assim que funciona uma calculadora normal).
NormalizeDouble deve ser usado porque são devolvidas frações que não estão completas, mas no segundo caso, a função retorna valores incorretos, e também não é possível não utilizá-la para o primeiro exemplo.
Sua calculadora normal não calcula corretamente, ela deveria:
Tudo porque o iniciante do tópico não lê a documentação do idioma e não escuta o que lhe é dito
se N+1 dígito < 5, então o dígito N é retido e N+1 e todos os dígitos subsequentes são zerados;
se o dígito N+1 ≥ 5, o dígito N é incrementado em um e N+1 e todos os dígitos subseqüentes são zerados;
Desculpe, mas ainda não entendo porque o arredondamento por '2' não permite imediatamente = 0,06000000
v1 = 0,06000000, v2 = 0,06000000
v1 = 0,06000000, v2 = 0,05000000
---
Sinto muito, mas ainda não entendo porque arredondar por '2' não permite obter = 0,06000000
Sinto muito, mas ainda não entendo porque arredondar por '2' torna impossível obter = 0,06000000
Quando apenas um dígito é normalizado, é simples: 0, 1, 2, 3, 4 -> 0, e 5, 6, 7, 8, 9 -> 1.
Quando dois dígitos são normalizados, são levados em conta números de dois dígitos: 0 - 49 -> 0, e 50 - 99 -> 1. Afinal, se o número 1,49 tem que ser arredondado para números inteiros, será que realmente temos que obter 2, que é 51 centésimos contra os 49 centésimos disponíveis de distância para 1?
O mesmo com três dígitos, quatro dígitos, etc.