c语言中double如何转换成float类型

#include<stdio.h>
#include<conio.h>
#include<math.h>
#define max_dimension 200
int m;
int n;
static double c[max_dimension][max_dimension];
static double b[max_dimension][max_dimension];
static double a[max_dimension];
static double x[max_dimension];
static double y[max_dimension];
static double sum[max_dimension];
static double total[max_dimension];
static double t;
void main()
{
float temp;
int i,j,l,k;
printf("Please Input jiedian number :");
scanf("%d",&n);
printf("Please Input duoxiangshi cishu :");
scanf("%d",&m);
printf("\n");
printf("please ent the x,y:\n");
for(j=0;j<n;j++)
{
scanf("%f",&temp);
x[j]=temp;
}
printf("\n");
for(j=0;j<n;j++)
{
scanf("%f",&temp);
y[j]=temp;
}
printf("\n");
for (k=0; k<=2*m; k++)
{ sum[k]=0;
for (j=1; j<n; j++)
sum[k]=sum[k]+pow(x[j],k);
printf("sum[%d]=%f ",k,sum[k]);
}
printf("\n");
for (k=0; k<=m; k++)
{ total[k]=0;
for (j=0; j<n; j++)
total[k]=total[k]+y[j]*pow(x[j],k);
printf("total[%d]=%f ",k,total[k]);
}
printf("\n");
printf("The Augmented(zenguang) Matrix is :\n\n");
for (i=0; i<=m; i++)
{
for (j=0; j<=m; j++)
{
c[i][j]=sum[i+j];
printf("%f ",c[i][j]);
}
c[i][m+1]=total[i];
printf("%f ",c[i][j]);
printf("\n");
}
printf("\n");

for(i=0;i<=m-1;i++)
{ l=i;
for(j=i+1;j<=m;j++)
if(fabs(c[j][i])>fabs(c[l][i]))l=j;
if(l!=i)
for(j=i;j<=m+1;j++)
{
t=c[i][j];
c[i][j]=c[l][j];
c[l][j]=t;
}
for(j=i+1;j<=m;j++)
{
t=-c[j][i]/c[i][i];
for(k=i;k<=m+1;k++)
b[j][k]=c[j][k]+c[i][k]*t;
}
printf("The Matrix after predigestion is :\n\n");
for (j=0; j<=m; j++)
{
for (k=0; k<=m+1; k++)
printf("%lf ",c[j][k]);
printf("\n");
}
printf("\n");
}
printf("The shangsanjiaozenguang Matrix after predigestion is :\n\n");
for (j=0; j<=m; j++)
{
for (k=0; k<=m+1; k++)
printf("%lf ",c[j][k]);
printf("\n");
}
printf("\n");
/* if(c[i][i]==0)
{
printf("The Matrix is qiyi Matrix:\n\n");
break;
}
else
{
*/ for(i=m;i>0;i--)
{
for(j=m;j>=i+1;j--)
c[i][n+1]=c[i][n+1]-a[j]*c[i][j];
a[i]=c[i][n+1]/c[i][i];
}
printf("The Root X is :\n");
for(i=0;i<=m;i++)
printf("a[%d]=%.5f \n",i,a[i]);
// }
}
现在主要是中间的那个高斯消去的算法中不能计算 ...
你可以输入 : jiedian number :5 duoxiacishu:2
x:1 3 4 5 6
y:10 5 4 2 1
试一试,谢谢哈

double 转换成float, 如果数值没有超界,例子如下:

void main()
{
double a=123.4L;
float b;
b = (float) a;
printf("%f",b);
}

如果数值范围超界,则不应转换。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-08
你要从double跟float申请的存储空间来理解。
C语言中double申请的内存空间是float的两倍,如果你强制转换会使数据丢失,只取后面的位数。
如果必须要转换,强制类型转换符为(float)比如楼上写的b = (float) a;
第2个回答  2019-10-26
直接赋值就行了
float到double没有精度损失的。
比如
float
a
=
1.33;
double
b
=
a;
1.33转成double型还是1.33
第3个回答  2009-12-08
用强制转换 呵呵加个括号就可以了
(double)
第4个回答  2009-12-08
直接把程序中的 double 换成 float 就可以了。很简单

参考资料:http://blog.sina.com.cn/s/blog_634054d10100fltn.html

相似回答