luisrcs
(usa Linux Mint)
Enviado em 24/04/2014 - 06:54h
9u31220 escreveu:
Eu uso C há uns 7 anos, apesar de não saber tudo nem ser um expert eu conheço bem a linguagem.
Motivos existem, se fosse em python por exemplo não precisaria me preocupar com o tamanho das variáveis e a quantidade de casas decimais e teria estruturas de dados mais poderosas já implementadas.
Mas no geral existem linguagens mais produtivas que o C, a começar pelo C++. Depois desse problema então que eu desanimei mais.
A propósito já descobri o problema, era o tamanho do float, se eu usar long double resolve o problema, vou marcar como resolvido.
Exatamente, qualquer linguagem moderna possui estruturas mais poderosas implementadas, em C, como você deve saber.
A questão é que C é a linguagem mãe; e quem quiser estruturas melhoradas, tem que implementar mesmo.
Esse problema com ponto flutuante não é com a linguagem, mas sim com a numeração binária. C faz as contas em binário e depois converte para decimal (se quiser faça o teste: divida ou multiplique números decimais com muitas casas decimais manualmente, depois converta para binário; em seguida faça a operação com os binários, depois converta para decimal).
Como o tipo float tem pouca precisão, vai dar um probleminha no final da cadeia numérica. Aumentando a precisão para long double, apenas empurrou o problema para mais longe das casas decimais.
Se quer realmente resolver isso, terá que implementar ou se conformar com o que conseguiu. Aqui no VOL, se não me engano tem um artigo sobre numerais gigantes em C, só não lembro se contempla casas decimais.
Já as outras linguagens, a implementação já ocorreu. Por isso que é errado comparar linguagens, como por exemplo, C com Python. Lógico que Python tem mais recursos, mas esses recursos foram implementados em C, já que Python foi escrita em C. O que quer dizer que, na verdade, tudo que se pode fazer em Python, se pode fazer em C, é só implementar.