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

#include<stdio.h>#include<conio.h>#include<math.h>#definemax_dimension200intm;intn;st... #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
试一试,谢谢哈
展开
 我来答
L_o_o_n_i_e
推荐于2017-09-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5249万
展开全部
double 转换成float, 如果数值没有超界,例子如下:

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

如果数值范围超界,则不应转换。
dd77913
2009-12-08 · 超过11用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:42.4万
展开全部
你要从double跟float申请的存储空间来理解。
C语言中double申请的内存空间是float的两倍,如果你强制转换会使数据丢失,只取后面的位数。
如果必须要转换,强制类型转换符为(float)比如楼上写的b = (float) a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
从曲以弘义
2019-10-26 · TA获得超过3819个赞
知道大有可为答主
回答量:3177
采纳率:34%
帮助的人:209万
展开全部
直接赋值就行了
float到double没有精度损失的。
比如
float
a
=
1.33;
double
b
=
a;
1.33转成double型还是1.33
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
243447688
2009-12-08 · 超过14用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:33.3万
展开全部
用强制转换 呵呵加个括号就可以了
(double)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友73e9383
2009-12-08 · TA获得超过300个赞
知道答主
回答量:69
采纳率:0%
帮助的人:30.6万
展开全部
直接把程序中的 double 换成 float 就可以了。很简单

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式