Error[8]: Undefined offset: 203, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C语言将double类型转成字符串并消除末尾的‘0’

前言

由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。

思路
  1. 利用%m.nlf格式输出符转换成字符串;
  2. 字符串读取到‘
  3. 字符串一个字符一个字符从后往前判断,消除后面多余的零;
  4. ’就会停止;<
转换代码
#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 [+++] [+++]
注意事项
  1. 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。

  2. 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 204, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C语言将double类型转成字符串并消除末尾的‘0’

前言

由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。

思路
  1. 利用%m.nlf格式输出符转换成字符串;
  2. 字符串读取到‘
  3. 字符串一个字符一个字符从后往前判断,消除后面多余的零;
  4. ’就会停止;<
转换代码
#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 [+++] [+++]
注意事项
  1. 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。

  2. 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 205, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C语言将double类型转成字符串并消除末尾的‘0’

前言

由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。

思路
  1. 利用%m.nlf格式输出符转换成字符串;
  2. 字符串读取到‘
  3. 字符串一个字符一个字符从后往前判断,消除后面多余的零;
  4. ’就会停止;<
转换代码
#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 [+++] [+++]
注意事项
  1. 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。

  2. 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 206, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C语言将double类型转成字符串并消除末尾的‘0’

前言

由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。

思路
  1. 利用%m.nlf格式输出符转换成字符串;
  2. 字符串读取到‘
  3. 字符串一个字符一个字符从后往前判断,消除后面多余的零;
  4. ’就会停止;<
转换代码
#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 [+++] [+++]
注意事项
  1. 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。

  2. 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 207, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C语言将double类型转成字符串并消除末尾的‘0’

前言

由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。

思路
  1. 利用%m.nlf格式输出符转换成字符串;
  2. 字符串读取到‘
  3. 字符串一个字符一个字符从后往前判断,消除后面多余的零;
  4. ’就会停止;<
转换代码
#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 [+++] [+++]
注意事项
  1. 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。

  2. 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 208, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C语言将double类型转成字符串并消除末尾的‘0’

前言

由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。

思路
  1. 利用%m.nlf格式输出符转换成字符串;
  2. 字符串读取到‘
  3. 字符串一个字符一个字符从后往前判断,消除后面多余的零;
  4. ’就会停止;<
转换代码
#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  [+++]
注意事项
  1. 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。

  2. 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
C语言将double类型转成字符串并消除末尾的‘0’_C_内存溢出

C语言将double类型转成字符串并消除末尾的‘0’

C语言将double类型转成字符串并消除末尾的‘0’,第1张

C语言将double类型转成字符串并消除末尾的‘0’
  • 前言
  • 思路
  • 转换代码
  • 测试代码
    • 代码
    • 输出结果
  • 注意事项

前言

由于项目中需要此类方法,但是printf、snprintf之类的%f,%g之类的格式控制输出符要么会自动四舍五入,要么无法消除后面多余的‘0’,要么会改变成科学计数法,没查到其他办法可以转换的,所以就自己写了个。

思路
  1. 利用%m.nlf格式输出符转换成字符串;
  2. 字符串读取到‘
  3. 字符串一个字符一个字符从后往前判断,消除后面多余的零;
  4. ’就会停止;<
转换代码
#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  
注意事项
  1. 目前这段代码最多实现小数点后9位的转换,请根据自己实际情况进行修改。

  2. 请根据实际情况加大存放字符串的数组空间 ,防止数据溢出。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存