博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浮点数转化为字符串
阅读量:5116 次
发布时间:2019-06-13

本文共 1478 字,大约阅读时间需要 4 分钟。

  (1)在不调用库函数的情况下,把浮点数转化为字符串的难点就在,把小数转化为字符串。因为浮点数的精度问题,当我们对浮点数进行乘10操作的时候,浮点数尾数数值可能就会发生变化,如float a=12.1047; a*=10;输出a=121.046997。所以在把浮点数的小数转化为字符串时要对精度进行限制。

1 #include
2 #include
3 #include
4 5 const double eps = 1e-11; 6 7 void float_to_str(char *str,double num) 8 { 9 int high;//float_整数部分 10 double low;//float_小数部分 11 char *start=str;12 int n=0;13 char ch[20];14 int i;15 high=(int)num;16 low=num-high;17 18 while(high>0){19 ch[n++]='0'+high%10;20 high=high/10;21 }22 23 for(i=n-1;i>=0;i--){24 *str++=ch[i];25 }26 27 num -= (int)num;28 double tp = 0.1;29 *str++='.';30 31 while(num > eps){
//精度限制 32 num -= tp * (int)(low * 10);33 tp /= 10;34 *str++='0'+(int)(low*10);35 low=low*10.0-(int)(low*10);36 }37 *str='\0';38 str=start;39 }40 int main()41 {42 double a;43 while( ~scanf("%lf", &a) ) {44 char str[20];45 float_to_str(str,a);46 printf("%s\n\n",str); 47 }48 49 }
View Code

 

  (2)如果使用库函数sprintf(),这个题目就很简单了,直接调用sprintf(),将浮点数格式化输出到指定字符串就好了。

sprintf( char *buffer, const char *format, [ argument] … );【sprintf()使用详情请baidu】

 

1 #include
2 int main()3 {4 float a=12.1047;5 char ch[100];6 sprintf(ch,"%f",a);7 puts(ch);8 }

 

 

 

 

转载于:https://www.cnblogs.com/johnleo/p/float_to_string.html

你可能感兴趣的文章
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>
NOIP2013 提高组 Day1
查看>>
个人对vue生命周期的理解
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>