【发布时间】:2018-08-24 10:05:01
【问题描述】:
我遇到了一个小问题。我正在尝试查找数字的倒数是否包含 C 中的数字。但是,我无法使用 float 或 double 打印小数点后 15 位以上的倒数。我怎样才能有尽可能多的小数位(比如超过 100++)?
解决方案:
char output[10000];
void divide(int a, int b, char *c, int d)
{
if (d == 10000)
return;
int e = a/b;
int f = (a%b)*10;
if(d>=1)
c[d+1] = e + '0';
divide(f, b, c, d+1);
}
【问题讨论】:
-
IEEE 754
double仅精确到大约 15 位数字。如果您想获得更高的精度,请使用long double,它在 x86 上精确到 19 位。如果你想有更多的数字,使用某种大整数库。 -
您需要自己编写长数字或找到一个库来为您完成。如果你想自己做,你需要回忆一下像长除法这样的高中算法,并在代码中实现它们。
标签: c floating-point decimal