Enviado em 31/03/2014 - 16:33h
Gente é o seguinte estou desenvolvendo uns códigos de hash bem aqui, um é usando método da divisão outro o da multiplicação, fiz até os simuladores para achar qual seria a melhor tabela, estou fazendo usando distribuições do top 100 do distrowatch. Problema é o seguinte no método da multiplicação já estou com o código 99% pronto, o que está me atrapalhando são 3 chaves que estão dando problema no arredondamento, como o código é extenso e tem biblioteca, e ainda lê de um arquivo binário, vou recriar apenas a parte que dá o bug para vcs me ajudarem a solucionar.
#include <stdio.h>
#include <stdlib.h>// no caso do codigo pq leio do arquivo
#include <math.h>
#define A 0.41
int main(void)
{
int k1=1201500;
int k2=2463075;
int k3=1261575;
int M=(int)pow(2,4);
double partint;
int posicao;
printf("\n k = %d",k1); // aqui o valor de k está normal
printf("\n A = %.10lf",A)//a tambem está normal 0.41000000
printf("\n k*A = %.10lf",k1*A);/* aqui já está alterado aparece 492614.9999999999 quando deveria aparecer 492615.0000000000*/
printf("\n modf(k*A,&partint) = %,10lf",modf(k1*A,&partint));/*aqui está alterado aparecendo 0.9999999999 quando deveria aparecer 0.0000000000*/
printf("\n M*modf(k*A,&partint) = %.10lf",M*modf(k1*A,&partint));/*aqui está alterado está aparecendo 15.9999999991 quando deveria aparecer 0.0000000000*/
printf("\n (int)M*modf(k*A,&partint) %d",(int)M*modf(k1*A,&partint));/* e aqui aparece 15 onde deveria aparecer 0*/
posicao=(int)M*modf(k1*A,&partint); //internamente é assim os prints são so para ilustrar
printf("\n k = %d",k2); // aqui o valor de k está normal
printf("\n A = %.10lf",A)//a tambem está normal 0.41000000
printf("\n k*A = %.10lf",k2*A);/* aqui já está alterado aparece 1009860.7499999999 quando deveria aparecer 1009860.7500000000*/
printf("\n modf(k*A,&partint) = %,10lf",modf(k2*A,&partint));/*aqui está alterado aparecendo 0.7499999999 quando deveria aparecer 0.7500000000*/
printf("\n M*modf(k*A,&partint) = %.10lf",M*modf(k2*A,&partint));/*aqui está alterado está aparecendo 11.9999999981 quando deveria aparecer 12.0000000000*/
printf("\n (int)M*modf(k*A,&partint) %d",(int)M*modf(k2*A,&partint));/* e aqui aparece 11 onde deveria aparecer 12*/
posicao=(int)M*modf(k2*A,&partint); //internamente é assim os prints são so para ilustrar
printf("\n k = %d",k3); // aqui o valor de k está normal
printf("\n A = %.10lf",A)//a tambem está normal 0.41000000
printf("\n k*A = %.10lf",k3*A);/* aqui já está alterado aparece 517245.7499999999 quando deveria aparecer 517245.7500000000*/
printf("\n modf(k*A,&partint) = %,10lf",modf(k3*A,&partint));/*aqui está alterado aparecendo 0.7499999999 quando deveria aparecer 0.7500000000*/
printf("\n M*modf(k*A,&partint) = %.10lf",M*modf(k3*A,&partint));/*aqui está alterado está aparecendo 11.9999999991 quando deveria aparecer 12.0000000000*/
printf("\n (int)M*modf(k*A,&partint) %d",(int)M*modf(k3*A,&partint));/* e aqui aparece 11 onde deveria aparecer 12*/
posicao=(int)M*modf(k3*A,&partint); //internamente é assim os prints são so para ilustrar
}
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Como unir duas coleções de ROMs preservando as versões traduzidas (sem duplicatas)
Como instalar o Telegram Desktop no Ubuntu 24.04
Overclocking Permanente para Drastic no Miyoo Mini Plus
Problemas de chaves (/usr/share/keyrings) no Debian
Converter os repositórios Debian para o novo formato com as chaves
eu preciso saber uma coisa sobre os games no linux (3)
eu preciso saber uma coisa sobre os games no linux (1)
Problema com audio apos upgrade (1)