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
Dependendo de seus objetivos, às vezes vale a pena ir a números inteiros ao todo. Isso economiza muitos nervos :-) Uma vez eu tive uma tarefa, onde tive que marcar com precisão muitos - muitos níveis, no início eu lutei com o dobro, e depois converti tudo em pontos inteiros de 0 e tudo se tornou fácil, simples e sem erros.
Não é necessário usar arredondamento, a menos que a tarefa o exija.
O problema é esse: as tarefas são diferentes :-)
Se você usaMathFloor ou MathCeil para arredondamento, você precisa normalizar o resultado original com a exatidão correta.
Porque durante o cálculo, ao invés de um número inteiro, você pode obter um número fracionário, e devido a este "rabo" do número ser arredondado incorretamente, o resultado é incorreto.
Por exemplo:
Print (DoubleToStr(1156.12/point, 15));
Print (NormalizeDouble(1156.12/point, _Digits));
agora vamos tentar arredondar com oMathFloor
Print (DoubleToStr(MathFloor(1156.12/point), 15));
Print (MathFloor(NormalizeDouble(1156.12/point, _Digits)));
Se eu normalizar o número para 1.05 - ele irá normalizar para 1.1, o que em princípionão éo que eu preciso usandoo MathFloor :-)
Pois eu não usariao MathFloor de forma alguma.
Mas o problema é diferente.
Но задача то другая.
Por que é diferente? Você disse que precisava arredondar para baixo - MathFloor faz exatamente isso
Por que é diferente? Você disse que precisava arredondar para baixo - isso é o que o MathFloor faz.
sim!!! mas se eu fizer uma normalização ela vai arredondar a matemática para baixo eo MathFloor não fará sentido
o exemplo acima com o número 1156.12, este número é armazenado na memória como 1156.1199999999999999891
Ou seja, se você tentar arredondar para um centésimo, você recebe 1156.11 ao invés de 1156.12, que é a "peculiaridade" que o levou a rachar seus miolos.
o exemplo acima com o número 1156.12, este número é armazenado na memória como 1156.1199999999999999891
ou seja, se você tentar arredondar para um centésimo, você receberá 1156,11 ao invés de 1156,12 - esta é a "peculiaridade" de seu problema.
Sim :-) Obrigado.