- 前言
- 思路
- 转换代码
- 测试代码
- 代码
- 输出结果
- 注意事项
由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。
- 利用%m.nlf格式输出符转换成字符串;
- 字符串读取到‘
- 字符串一个字符一个字符从后往前判断,消除后面多余的零; ’就会停止;<
#include .stdio"string.h"h>
#include void
Double2String (*char ,str,int len)double value={
len snprintf (,str,len"%0.9lf",)value;for
(=int i - len1;0i >= ;--i)if{
([str]i== ')' continue; if(
==0i ) return; //小数点退出if
(
[]str==i'.' ) [] {
str=i';' return ;}
if(
[
]!=str'0'i) return ;//把零消除掉 if(
[
]==str'0'i) [ ]={
str';'i} //如果小数点后一位也是零,那么将小数点也给消除掉 if(
[
]
=='0'str&&i[ - 1 ] str!=i'0')if ( [-{
1]str==i'.')[ - 1]{
str=i';'return; } []
=';'
return
str;i} } }main
()
[
20
]
测试代码
代码
int ;=11234567890
{
char str;=/1000000.0
double c ; Double2String(
c , c20,)
;printfstr("output:\n")c;printf
("%%0.9lf = %0.9lf\n",);
//%0.9lf输出结果printf("%%0.9g = %0.9g\n"c,);
//%0.9g输出结果printf("Double2String = %s\n"c,);
return0;}str-*
. -:
%
输出结果
$gcc 0.9o main =11234.567890000c %lm
$main
output0.9
=11234.5679lf = 11234.56789
g
Double2String
注意事项
- 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。
- 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)