浮点数转换为字符串

自己写的一个浮点数转换为字符串的函数,有点简陋,因为不支持科学计数法

void citoa(int num, char* result,int& end);
void dectoa(float fNum, char* result,int& end);
// 浮点数转换为字符串
void floatToString(float f)
{
	int intPart = (int)f;
	float decimalPart = f - intPart;
	cout<<intPart<<endl;
	cout<<decimalPart<<endl;
	char floatString[100];
	int end = 0;
	if(0 != intPart)
	{
		citoa(intPart,floatString,end);
		floatString[end] = '.';
	}
	dectoa(decimalPart,floatString,end);
	printf(floatString);
	printf("\n");
}
// 整数转换为字符串
void citoa(int num, char* result,int& end)
{
	//if(0 == num)
	//{
	//	result[0] = '0';
	//	end = 1;
	//	return;
	//}

	int i = 0;
	// num is a negative number
	if(num < 0)
	{
		result[i] = '-';
		++i;
		num *= -1;
	}

	while(num > 0)
	{
		result[i] = (num % 10) + '0';
		num = num/10;
		++i;
	}
	if('-' == result[0])
		ReverseWord(result+1,result+i-1);
	else
		ReverseWord(result,result+i-1);
	end = i;
}
// 纯小数部分转换为字符串
void dectoa(float fNum, char* result,int& end)
{	
	int i = 0;
	if(0 == end)
	{		
		if(fNum < 0.0f)
		{
			result[0] = '-';
			i = 1;
			fNum = fNum * (-1);
		}
		result[i] = '0';
		result[i+1] = '.'; 
		end = i + 1;
	}

	if(fNum < 0.0f)
		fNum = fNum * (-1);

	while(fNum > 0.0f)
	{
		++end;
		fNum *= 10;
		int singleInt = (int)fNum;
		result[end] = singleInt + '0';
		fNum -= singleInt;
	}
	++end;
	result[end] = '\0';
}


 

在大多数编程语言中,将浮点数转换字符串是较为容易的操作,但如果遇到无法转换的情况,可能是由于一些特殊原因,以下针对不同编程语言给出解决办法: #### Python 在 Python 里,通常使用 `str()` 函数就能把浮点数转换字符串。示例代码如下: ```python float_num = 3.14 str_num = str(float_num) print(str_num) ``` 要是遇到特殊情况,比如浮点数为 `NaN` 或者 `inf`,也能正常转换: ```python import math nan_num = float('nan') inf_num = float('inf') str_nan = str(nan_num) str_inf = str(inf_num) print(str_nan) print(str_inf) ``` #### Java Java 可通过 `String.valueOf()` 方法或者 `Float.toString()` 方法把浮点数转换字符串。代码示例如下: ```java class Main { public static void main(String[] args) { float floatNum = 3.14f; String strNum1 = String.valueOf(floatNum); String strNum2 = Float.toString(floatNum); System.out.println(strNum1); System.out.println(strNum2); } } ``` #### JavaScript JavaScript 能使用 `toString()` 方法将浮点数转换字符串。示例如下: ```javascript let floatNum = 3.14; let strNum = floatNum.toString(); console.log(strNum); ``` #### 可能遇到的问题及解决办法 - **精度问题**:某些编程语言在将浮点数转换字符串时,可能会出现精度丢失的情况。可以使用特定的格式化函数来控制精度,例如 Python 的 `format()` 函数: ```python float_num = 3.1415926 str_num = "{:.2f}".format(float_num) print(str_num) ``` - **异常值处理**:如果浮点数是 `NaN` 或者 `inf`,在转换时要确保程序能正确处理。在 Python 中,`str()` 函数能正常处理这些值;在 Java 里,`Float.isNaN()` 和 `Float.isInfinite()` 方法可用于检查这些特殊值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值