C中浮点数转字符串
求浮点数转换成字符串,如何才能获得比较正确的字符串。
用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中浮点数转字符串的更多相关文章
- C#中浮点数依IEEE-754标准转二进制串 (MODBUS 浮点数转换)
因工作需要,把再串口通信中浮点数与字节流的数据转换函数放在这,转发的,谢谢原作者. 今天花了一天的时间搜罗资料,为了解决一个串口编程的进制转化问题.因为串口传送的浮点数据格式与IEEE-754标准(3 ...
- [转]:Delphi中Format的字符串格式化使用说明
一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明: function Forma ...
- Delphi 中Format的字符串格式化使用说明(转)
源:Delphi 中Format的字符串格式化使用说明(转) 一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供 ...
- LoadRunner中常用的字符串操作函数
LoadRunner中常用的字符串操作函数有: strcpy(destination_string, source_string); strc ...
- python课程设计笔记(四)整数、浮点数与字符串 time库
整数类型(范围无限制) 十进制1 -1 二进制0b1 -0b1 八进制0o1 -0o1 十六进制0x1 -0x1 浮点类型(范围有限制但可忽略) 运算存在不确定尾数 :0.1+0.2!=0.3 原因: ...
- 【Win 10 应用开发】分析 URI 中的查询字符串
分析URI中的字符有K种方法(K >= 2),如果查询字符串中的参数比较简单,可以通过子字符串查找的方式来处理:如果查询字符串相对复杂,你可以使用正则表达式来匹配 key1=value1 , ...
- Delphi中stringlist分割字符串的用法
Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...
- ES6中的模板字符串和新XSS Payload
ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的 ...
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
随机推荐
- Android 高级UI设计笔记05:使用TextView实现跑马灯的效果
1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...
- hdu 1325 Is It A Tree?
Is It A Tree? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- PHP,单双引号的区别‘“”“”’
一.转义 单引号:只转义\'和\\,其他不转义 双引号:都转义 二.变量解析 单引号:无法解析变量(原样输出) 双引号:可以解析变量 三.速度 单引号:更快 双引号:要分析是否有变量,转义内容更多 结 ...
- Linux 命令 - su: 以其他用户和组 ID 的身份来运行 shell
在 shell 会话状态下,使用 su 命令将允许你假定为另一个用户的身份,既可以以这个用户的 ID 来启动一个新的 shell 会话,也可以以这个用户的身份来发布一个命令. 命令格式 su [OPT ...
- Git - Download for Linux and Unix
It is easiest to install Git on Linux using the preferred package manager of your Linux distribution ...
- Global.asax中的操作数据库代码无法执行
本人最近在做一个基于Access数据库的Web应用程序,为了实现一个定时更新数据库的需求,我在Global.asax中的Application_Start函数里写了个计时器, void Applica ...
- AngularJS Tabular Data with Edit/Update/Delete
效果 首先,我们先建立一些数据,当然你可以从你任何地方读出你的数据 var app = angular.module('plunker', ['ui.bootstrap']); app.control ...
- UML——类和对象
- JSP之初识
JSP是“java server pages”的缩写,java是一种编程语言,jsp只是相当于java里面的servlet部分,所以JSP技术是以Java语言作为脚本语言的. JSP这门技术的最大的特 ...
- SQL Server的三种物理连接之Hash Join(三)
简介 在 SQL Server 2012 在一些特殊的例子下会看到下面的图标: Hash Join分为两个阶段,分别为生成和探测阶段. 首先是生成阶段,将输入源中的每一个条目经过散列函数的计算都放到不 ...