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
@fxsaber NormalizeDouble arredonda para casas decimais, o que é diferente de arredondar para dígitos significativos. SF é 1-15 ou 17 inclusive. Não há 0.
Não entendi.
NormalizeDouble(12.345, 2) -> 12.35
RoundToSignificantDigits(12.345, 2) -> 12
EqualDouble() é usado para comparar valores suspeitos de serem iguais, como 1,123456 e 1,23456789
também pode ser usado com números muito grandes, como 1234567891234.1234 e 1234567891234.1255
sem conhecer os dígitos decimais dos números que você compara entre si.https://www.wikiwand.com/en/Significant_figures
https://chem.libretexts.org/Bookshelves/General_Chemistry/Book%3A_Chem1_(Lower)/04%3A_The_Basics_of_Chemistry/4.06%3A_Significant_Figures_and_Rounding
https://www.calculatorsoup.com/calculators/math/significant-figures-rounding.php
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Bibliotecas: Utilitários matemáticos
fxsaber, 2023.02.21 21:01
Você precisa aprender a fazer medições de desempenho adequadas.
21 vezes mais rápido.
@fxsaber Eu não verifiquei depois de você, ontem!
Mas, quando voltei hoje, descobri que você fez o benchmarking de forma errada. Você só fez o benchmark do operador de módulo %, mas com algumas otimizações internas do compilador você obteve essa diferença irreal.
Usei esse benchmark simples para verificar novamente. Ambas as funções são suficientemente rápidas. Portanto, nenhuma mudança!
@fxsaber Eu não verifiquei depois de você, ontem!
Mas, quando voltei hoje, descobri que você fez o benchmarking de forma errada. Você apenas comparou o operador de módulo %, mas com algumas otimizações internas do compilador você obteve essa diferença irreal.
Usei esse benchmark simples para verificar novamente. Ambas as funções são suficientemente rápidas. Portanto, nenhuma mudança!
Você está tirando conclusões erradas.
// 200000000.0significa que as chamadas de função não foram otimizadas pelo compilador. Não sei por que você manipula o terceiro argumento, deixe-o como um parâmetro padrão e teste novamente.
Use um loop simples.
significa que as chamadas de função não foram otimizadas pelo compilador. Não sei por que você manipula o terceiro argumento, deixe-o como um parâmetro padrão e teste novamente.
Use um loop simples.
Infelizmente, você não entende o que está medindo.
Desative as otimizações do compilador e tente novamente.
Então, por que desativar? Eu escrevo a função e depois dependo do compilador de otimização.
Caso contrário, eu programaria em assembly como nos velhos tempos :-)