|
|
例如: 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--];elsej--;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字符了…… |
|