c语言将浮点数四舍五入到N位

来源:百度知道 编辑:UC知道 时间:2024/05/17 21:09:32
//14将一个浮点数四舍五入到第N位
#include<stdio.h>
void main()
{
int i,n;
long int m,k;

float a;
printf("n,a=");
scanf("%d,%f",&n,&a);
for(k=1,i=1;i<=n+1;i++)k*=10;
m=a*k;m+=5;m/=10;
printf("%f\n",m);
printf("%f \n",(float)m/k);
}

修改后程序:
#include "stdio.h"
void main()
{
int i,n;
long int m,k;

float a;
printf("n,a=");
scanf("%d,%f",&n,&a);
for(k=1,i=1;i<=n+1;i++)k*=10;
m=a*k;m+=5;m/=10;
printf("%f\n",(float)m); /*m为长整型,如果输出浮点型,必须对其强制转换,否则输出为0.000000*/
printf("%g\n",(float)m/k*10); /*%f改成%g,否则小数点后固定为六位,不足补零。*/
/*(float)m/k*10,因为for循环时,i最后为n+1,多成了一个10,所以这里要补回来*/
}