[Resolvido]Calculo com números grandes com ponto flutuante

Bom dia, minha dúvida não está relacionada a uma linguagem específica mas a linguagens nativas como C, C++, Pascal, etc… então não sei se essa é a melhor área do fórum para essa pergunta.

Suponhamos que em um determinado aplicativo feito em C você tenha uma soma entre 2 variáveis do tipo double, ambos com valor 7.543534543.

Existe alguma diferença de performance (por menor que seja) se o valor das variáveis fosse maior ou menor? Por exemplo: 8.63050787044154150 + 21.44077 levaria mais ou menos tempo do que 4.98 + 504.30111?

Eu sei que para inteiros não existe diferença (assumindo que sejam o mesmo tipo de variável), ao menos até aonde eu sei.

[quote=Sem_Nome]Bom dia, minha dúvida não está relacionada a uma linguagem específica mas a linguagens nativas como C, C++, Pascal, etc… então não sei se essa é a melhor área do fórum para essa pergunta.

Suponhamos que em um determinado aplicativo feito em C você tenha uma soma entre 2 variáveis do tipo double, ambos com valor 7.543534543.

Existe alguma diferença de performance (por menor que seja) se o valor das variáveis fosse maior ou menor? Por exemplo: 8.63050787044154150 + 21.44077 levaria mais ou menos tempo do que 4.98 + 504.30111?

Eu sei que para inteiros não existe diferença (assumindo que sejam o mesmo tipo de variável), ao menos até aonde eu sei.[/quote]

Não, pois o tamanho da entrada é o mesmo. Variáveis double sempre vão ocupar o mesmo tamanho de memória (se eu não me engano 32-bits).

Eu estava apenas lendo algumas coisas relacionadas a baixo nível e uma delas dizia que a utilização de ponto flutuante era bem diferente de inteiros então eu pensei que números grandes (decimais) seriam mais devagar para se trabalhar mas aparentemente não.

Obrigado pela atenção.

[quote=Sem_Nome]
Existe alguma diferença de performance (por menor que seja) se o valor das variáveis fosse maior ou menor? [/quote]

Você está perguntando se a quantidade de dígitos significativos decimais é maior ou menor? Totalmente indiferente.

Na verdade:

a) O computador faz as contas em binário - só de converter o decimal para binário, você vai ter coisas que são difíceis de prever - por exemplo, o número 0,000244140625 tem menos dígitos diferentes de zero em binário que em decimal (respectivamente, 1 e 9)

b) O hardware de ponto flutuante que existe na maior parte dos processadores usa algoritmos que fazem as operações básicas (adição, multiplicação, subtração e divisão) em tempo constante ou então proporcional à quantidade de bits do número (float = 32, double = 64)

Portanto, não se preocupe com isso :slight_smile:

Só por curiosidade, procure como é implementado o hardware de ponto flutuante nos processadores atuais. Vai ser um bocadinho difícil de achar, mas você vai descobrir que você não precisa mesmo se preocupar com a quantidade de dígitos decimais na representação no número.

Ola entanglement, durante o meu tempo eu acabo procurando por coisas que geralmente não estão relacionados diretamente com o que eu faço (mas tenho muita curiosidade de saber). Seguirei seu conselho :slight_smile: