float和double的问题。#includestdio.hmain(){double xx2222222222.222226666printf(x%f\n,x)}x2
float和double的问题。
#include<stdio.h>
main()
{
double x;
x=2222222222.222226666;
printf("x=%f\n",x);
}
x=2222222222.222227
Press any key to continue
#include<stdio.h>
main()
{
float x;
x=22222.678;
printf("x=%f\n",x);
}
x=22222.677734
Press any key to continue
问①,在我这台电脑用这个软件的只“针对”上述这个程序,这个结果,即“此刻”float 和 double 的有效数分别是多少呢?(注意:不要多想。就“只针对”此刻。即上述我给出的那个程序的那个结果的“此刻”)
②,书中说 float 的有效数是 6~7位
Double 的有效数是 15~16位。 究竟是多少位和电脑有关还是和软件有关?
double c float
[解决办法]
1. 显然 double 到 7 那一位就不精确了, 精确的位数是 2222222222.22222 共 15 位.
float 到 8 那一位已经不精确了, 精确的位数是 22222.67 共 7 位.
2. 浮点数有标准的, 按标准来的话就和电脑与软件无关了. 能精确多少位是和具体的数有关的.
[解决办法]
参考IEEE754标准。
