有关计算的问题。。。
大家先看下我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double *ptr_a;
ptr_a=(double *)malloc(3*sizeof(double));
*ptr_a=4.0/3.0;
printf("*ptr_a=%.20lf",*ptr_a);
free(ptr_a);
system("pause");
return 0;
}
这个程序的目的是为了尽可能多的得到小数点后的数,比如得到小数点后15位,20位等等。
这个程序运行之后的输出是:
1.33333333333333330000
问题:为什么在小数点后得到了16个3之后,其余就是0了?
如果把代码中printf("*ptr_a=%.20lf",*ptr_a);的20改成大于20的数时,只是输出16个3,其余都是0;
我个人认为他应该继续输出3,而不是0,3的位数应该和*ptr_a所占的内层空间有关啊~~
有哪位高人知道这是为什么吗?
[解决办法]
数据精度问题
你想想,用有限的内存能表示无限的精度吗?
[解决办法]