如何在 C 中与 12 位小数相乘?
How multiply with 12 decimals in C?
我试图在 C 中实现 12 位小数的精度。我不知道是否有更简单的解决方案。但至少该代码有效。现在我只是想将结果保存在 "long double" 中,但 "strtold()" 不起作用
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;
}
printf("%.12lf",num);
解决问题。
将两个double相乘并像这样打印。无需使用 long
.
我试图在 C 中实现 12 位小数的精度。我不知道是否有更简单的解决方案。但至少该代码有效。现在我只是想将结果保存在 "long double" 中,但 "strtold()" 不起作用
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;
}
printf("%.12lf",num);
解决问题。
将两个double相乘并像这样打印。无需使用 long
.