首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关计算的有关问题。

2012-03-23 
有关计算的问题。。。大家先看下我的代码:#include stdio.h#include stdlib.hint main(void){double *ptr

有关计算的问题。。。
大家先看下我的代码:
#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所占的内层空间有关啊~~
有哪位高人知道这是为什么吗?


[解决办法]
数据精度问题

你想想,用有限的内存能表示无限的精度吗?

[解决办法]

探讨
那按照您的意思,如果我想利用C编写计算自然常数E的程序,但是系统所能支持的只有E小数点后16位?
倘若我想得到100位的E,用C是做不到的?或者还可以利用C别的功能来实现?

热点排行