求浮点数转换成字符串,如何才能获得比较正确的字符串。
用printf("%f\n", (float)5); 这种方式转换出来的结果是 5.000000 ,末尾都会带6位小数。

控制精度在6位,虽然控制精度在6位,但并不希望输出时后面出现多余0。

需要:

    精度控制 6 位,剔除多余占位零。

printf和gcvt这两个函数多有些不太满足要求。

实际想得到的结果
float                  string
---------------------------------
5                      "5.0"
5.1                    "5.1"
5.001                  "5.001"
5.0000001              "5.0"

现在的结果(-_-!!)
float                  string
---------------------------------
5                      "5.000000"
5.1                    "5.100000"
5.001                  "5.001000"
5.0000001              "5.000000"

大致实现方法

1、正常格式化浮点为字符
  2、清除多余的占位零

char * float2str(float val, int precision, char *buf)
{
char *cur, *end; sprintf(buf, "%.6f", val);
if (precision < ) {
cur = buf + strlen(buf) - ;
end = cur - + precision;
while ((cur > end) && (*cur == '')) {
*cur = '\0';
cur--;
}
} return buf;
} int main(int argc, char** argv)
{
char buf[]; printf("%s\n", float2str((float), , buf));
printf("%s\n", float2str((float)5.1, , buf));
printf("%s\n", float2str((float)5.12, , buf));
printf("%s\n", float2str((float)5.123, , buf));
printf("%s\n", float2str((float)5.12345678, , buf)); return (EXIT_SUCCESS);
}

运行结果比较满意,达到想要的效果

C中浮点数转字符串的更多相关文章

  1. C#中浮点数依IEEE-754标准转二进制串 (MODBUS 浮点数转换)

    因工作需要,把再串口通信中浮点数与字节流的数据转换函数放在这,转发的,谢谢原作者. 今天花了一天的时间搜罗资料,为了解决一个串口编程的进制转化问题.因为串口传送的浮点数据格式与IEEE-754标准(3 ...

  2. [转]:Delphi中Format的字符串格式化使用说明

    一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明: function Forma ...

  3. Delphi 中Format的字符串格式化使用说明(转)

    源:Delphi 中Format的字符串格式化使用说明(转) 一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供 ...

  4. LoadRunner中常用的字符串操作函数

    LoadRunner中常用的字符串操作函数有:                strcpy(destination_string, source_string);               strc ...

  5. python课程设计笔记(四)整数、浮点数与字符串 time库

    整数类型(范围无限制) 十进制1 -1 二进制0b1 -0b1 八进制0o1 -0o1 十六进制0x1 -0x1 浮点类型(范围有限制但可忽略) 运算存在不确定尾数 :0.1+0.2!=0.3 原因: ...

  6. 【Win 10 应用开发】分析 URI 中的查询字符串

    分析URI中的字符有K种方法(K >= 2),如果查询字符串中的参数比较简单,可以通过子字符串查找的方式来处理:如果查询字符串相对复杂,你可以使用正则表达式来匹配 key1=value1 ,  ...

  7. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...

  8. ES6中的模板字符串和新XSS Payload

    ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的 ...

  9. C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

随机推荐

  1. oracle函数、包、变量的定义和使用、重点”结构体和数组”

    函数 实例1:输入雇员的姓名,返回该雇员的年薪 create function fun1(spName varchar2) ,); begin +nvl(comm,) into yearSal fro ...

  2. python(5) - time模块

    import time 1. time.gmtime()       显示当前structtime,格林时间 >>> import time >>> time.gm ...

  3. LAMP平台搭建详解

    准备工作 安装编译工具 # yum -y install gcc # yum -y install gcc-c++ 如果系统之前已经安装有rpm包的mysql和apache,那么可以: #servic ...

  4. [转]Maintain File Upload Control on Postbacks

    本文转自:http://www.ironspeed.com/articles/Maintain%20File%20Upload%20Control/Article.aspx Introduction ...

  5. javascript基础知识--函数定义

    函数声明式 function funname( 参数 ){ ...执行的代码 } 声明式的函数并不会马上执行,需要我们调用才会执行:funname(); * 分号是用来分隔可执行JavaScript语 ...

  6. 关于easyui的一些小知识点(1)

    让layout布局自动适应浏览器宽度只需要加上fit="true"属性.

  7. HDOJ2027统计元音

    统计元音 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  8. Sqlite事物与锁

    1事务 事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行.事务的典型实例是转帐. 2事务的范围 事务由3个命令控制:BEGIN.COMMIT和ROLLBACK.BEGI ...

  9. 【Linq to Object】使用LINQ实现左链接加GROUP BY查询

    直接上代码留记 var list = (from item in (from tb1 in fileDirList join tb2 in fileInfoList on tb1.FileDirId ...

  10. javascript对象初读

    <script type="text/javascript"> function baseClass() { this.showMsg = function() { a ...