double类型转换为汉字算法

  例如: 192.37  得到: 壹佰玖拾贰元叁角柒分

    刚刚在CSDN上面看到的,觉得还挺有意思的就做来看看。做完后对比一下别人那些C#跟java的代码写了一大段……汗,果然还是C/C++的数组操作方便。
#include<iostream>
#include<string>
using namespace std;

const wchar_t num[]=L"零壹贰叁肆伍陆柒捌玖";
const wchar_t wei[]=L"万仟佰拾亿仟佰拾万仟佰拾元角分";


void change(double price)
{
	wchar_t result[257]={0};
	int i=255,j=14,m;
	bool iszero=false;
	m=price*100;
	while(m)
	{
		if(iszero)
		{
			if((j%4)==0)
				result[i--]=wei[j--];
			else
				j--;
			if((m/10)%10)
				iszero=false;
		}
		else
		{
			if(m%10)
			{
				result[i--]=wei[j--];
				result[i--]=num[m%10];
				iszero=false;
			}
			else
			{
				if((j%4)==0)
					result[i--]=wei[j--];
				else
				{
					j--;
					if(j<12)
						result[i--]=num[m%10];
				}
				if(!(m/10)%10)
					iszero=true;
			}
			
		}
		m=m/10;
	}
	wcout<<(result+i+1)<<endl; 
}

int main()
{ 
	wcout.imbue( locale("chs") );
	change(101101.01);
	return 0;
}

    代码风格写得太难看了,不过C++的static_cast实在太长了,还是用C风格的强制转换算了。用char字符的话会乱码……只好用unicode字符了……

你可能感兴趣的:(C++,c,算法,C#,J#)