Quando normalizado a 8 dígitos ma>preço está correto. A normalização para menos dígitos resultará em igual - incorreto. É assim que se obtém a máxima precisão.
É uma piada, não é? :) Em geral, sem normalizar o ma > preço também é a coisa certa a fazer. Por que obter a máxima precisão quando ela já está lá e já é conhecida por ser maior do que o possível?
A normalização para 9 dígitos não funciona. A impressão é que o preço é uma espécie de 9 dígitos e o acusador tem 8 ou vice versa (não me lembro), em suma, é coberto pelo mistério do desconhecido.
Sim, o mais provável é que em NormalizeDouble em si mesmo conte apenas até 8 dígitos. Estou lhe dizendo, é uma função ridícula, não importa como você a gire.
Irtron: É claro! Se a precisão for conhecida, que é o caso dos valores comerciais. Ponto fixo.
Eu concordo. Somente é necessário explicá-lo a numerosos autores de temas "sobre a comparação de duplas". É por isso que propus uma forma _universal_ (mas longe de ser ótima) de comparação. E funciona. De forma lenta, mas confiável. E em todos os casos.
E quando um tópico "Sobre otimização de comparação de duplas" aparecer, poderemos desenvolvê-lo ;)
Eu gostaria de agradecer a todos os profissionais por sua visão!
Irtron, eu escolhi sua variante, eu gostei muito. Corrigi-o um pouco para casos gerais e verifiquei-o:
int Comparação Preço (duplo a, duplo b, duplo dígito) { a -= b; b = dígito; se (a > b) retornar (1); se (a < -b) retorno (-1); retorno (0); } Obrigado.
Qualquer dígito causará problemas. Eu não entendo o que é dígito e qual é o objetivo da modificação.
Inteiro: Também a função é mais lenta do que uma única chamada paraNormalizarDuplo().
Também será mais lento que o MathAbs, 2+3 etc. :)
Qual é o tema da comparação de funções com diferentes funcionalidades? Uma simplificada (impraticável, no entanto), agora é a NormalizeDouble. O que e a quem você quer provar com tanta gritaria... (insira você mesmo)?
VBAG dê uma olhada neste roteiro
preço = 1.1111
ma = 1.11110001
Quando normalizado a 8 dígitos ma>preço está correto. A normalização para menos dígitos resultará em igual - incorreto. É assim que se obtém a máxima precisão.
Em geral, sem normalizar o ma > preço também é a coisa certa a fazer. Por que obter a máxima precisão quando ela já está lá e já é conhecida por ser maior do que o possível?
A normalização para 9 dígitos não funciona. A impressão é que o preço é uma espécie de 9 dígitos e o acusador tem 8 ou vice versa (não me lembro), em suma, é coberto pelo mistério do desconhecido.
Sim, o mais provável é que em NormalizeDouble em si mesmo conte apenas até 8 dígitos. Estou lhe dizendo, é uma função ridícula, não importa como você a gire.
E de forma simplificada, funciona tão rápido quanto o ComparePrice:
E em sua forma original, é apenas uma canção :)
Ou o ComparePrice também é adequado para comparar qualquer número com uma determinada precisão?
Ou o ComparePrice também é adequado para comparar qualquer número com uma determinada precisão?
É claro! Se a precisão for conhecida, que é o caso dos valores comerciais. Ponto fixo.
Somente é necessário explicá-lo a numerosos autores de temas "sobre a comparação de duplas".
É por isso que propus uma forma _universal_ (mas longe de ser ótima) de comparação.
E funciona. De forma lenta, mas confiável. E em todos os casos.
E quando um tópico "Sobre otimização de comparação de duplas" aparecer, poderemos desenvolvê-lo ;)
A normalização dos preços é necessária em qualquer lugar?
Está escrito na documentação que os preços nos pedidos comerciais devem ser normalizados.
No ramo "História não normalizada e posições de abertura", diz o seguinte:
Irtron, eu escolhi sua variante, eu gostei muito. Corrigi-o um pouco para casos gerais e verifiquei-o:
int Comparação Preço (duplo a, duplo b, duplo dígito)
{
a -= b;
b = dígito;
se (a > b)
retornar (1);
se (a < -b)
retorno (-1);
retorno (0);
}
Obrigado.
Digit=0 causará problemas.
Qualquer dígito causará problemas. Eu não entendo o que é dígito e qual é o objetivo da modificação.
Também a função é mais lenta do que uma única chamada paraNormalizarDuplo().
Qual é o tema da comparação de funções com diferentes funcionalidades? Uma simplificada (impraticável, no entanto), agora é a NormalizeDouble.
O que e a quem você quer provar com tanta gritaria... (insira você mesmo)?