J'essaie d'avoir une précision de 12 décimales en C. Je ne sais pas s'il y a une solution plus facile. Mais au moins ce code fonctionne. Maintenant, je suis juste essayer de sauvegarder le résultat dans un « long double », mais « strtold() » ne fonctionne pasComment se multiplier avec 12 décimales en C?
char* multiply12Decimals(float n1, float n2)
{
long n1Digits;
sscanf(doubleToVoidPointerInNewMemoryLocation(n1*1000000), "%ld", &n1Digits);
printf("n1Digits: %ld\n", n1Digits);
long n2Digits;
sscanf(doubleToVoidPointerInNewMemoryLocation(n2*1000000), "%ld", &n2Digits);
printf("n2Digits: %ld\n", n2Digits);
long long mult = (long long) n1Digits*n2Digits;
printf("mult: %lld\n", mult);
char *charNum = malloc(30*sizeof(char));
sprintf (charNum, "0.%012lld\n", mult);
printf("result: %s\n", charNum);
return charNum;
}
Il n'y a pas de code dans le code! Quelle est la définition de "doubleToVoidPointerInNewMemoryLocation" –
int main() { float f1 = 2.053388; flotteur f2 = 0,100269; long double f3; f3 = strtold (multiplier12Décimales (f1, f2), NULL); printf ("Final:% Lf", f3); return 0; } – CEAC
Ce code n'a aucun sens. Pourquoi pensez-vous que vous avez besoin de changer les choses par intermittence à des chaînes et autres joyeusetés –