1. 姓 名:
    电 话:
       快 速
       留 言:
    验证码:
北大青鸟首页 >> 学员天地 >> 学员心声
学习编程

      终于开始了编程的学习,今天学习的是将浮点数按照一定的格式转换成字符串,课堂上老师介绍了两种方法,下面我将今天学到的两种方法跟大家一起分享。

方法一:
   这是一个比较简单的方法。
#include<stdio.h>
void main()
{//将浮点数保留2位小数,保存成字符串。
    double  d = 14.56456456 ;//也可以是float类型的
    char s [ 30 ] ;
    sprintf ( s , "%10.2lf" , d ) ; 
    printf("\n%s",s);
}
 
方法二
  自定义了一个将浮点数转换成字符串的函数和将字符串按照要求截取(比如说,保留两位小数)
#include<iostream.h>
#include<math.h>
void ftos(double num,char *p)
{//浮点数float转换成字符串型
 int i=0,j=0,count=0,t,m[50],num1;//整数部分
 double num2;//小数部分
 num1=(int)num;
 num2=num-num1;
 while(num1)
 {//分离num1的每一位数,倒序放入m数组中。
  m[count++]=num1%10;
  num1/=10;
 }
 for(i=0;i<count/2;i++)
 {//将m数组倒序
  t=m[count-1-i];
  m[count-1-i]=m[i];
  m[i]=t;
 }
 for(i=0;i<count;i++)
 //整数部分转换成字符串
  p[j++]=m[i]+'0';
  p[j++]='.';
 for(i=0;i<50;i++)//清空m数组
  m[i]=0;
 for(i=0,count=0;i<6;i++)
 {//只转化小数点后6位
  m[count++]=(int)(num2*10);
  num2=num2*10-m[i];
 }
 for(i=0;i<count;i++)
  p[j++]=m[i]+'0';
 p[j]='\0';
}
void pointnum(double num,int n)
{
 char point[50];
 int i,count=0;
 ftos(num,point);//将num转换成字符串,放入point数组中
 while(point[count]!='\0')//计算数组point的元素数。 
    count++;
 for(i=0;i<count;i++)
  if(point[i]=='.')
  {
   i+=n;//保留n位小数
   if(point[i+1]>'4')
    point[i]++;
   point[++i]='\0';
   break;
  }
 cout<<point<<endl;

}
void main()
{
 double a;
 cout<<"输入一个正数:";
 cin>>a;
 if(a<0)
 {
  cout<<"输入错误!"<<endl;
  return;
 }
 cout<<a<<"的平方根是:"<<sqrt(a)<<endl;
 cout<<a<<"的平方根是:";
 pointnum(sqrt(a),2);
}
 
有兴趣的同学可以将代码自己练习的!