#include <math.h>
//const char* szUnit = "万仟佰拾亿仟佰拾万仟佰拾元角分"; // 对应单位
//#define UNIT_LEN 14 //单位长
const char* szUnit = "仟佰拾万仟佰拾元角分"; // 对应单位
#define UNIT_LEN 9 //单位长
// 数字金额转换汉字金额
const char* atoc(double num)
{
unsigned __int64 money;
unsigned __int64 div;
int value;
int i;
static char szMoney[UNIT_LEN * 4 + 1];// 转换后的汉字金额
const char* szCNNum = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字
money = (unsigned __int64)(num * 100);
if ( money >= (unsigned __int64)pow(10, UNIT_LEN + 1) ) {
return "超出计算范围";
}
// if ( money == 0 ) return "零元整";
strcpy(szMoney, "");
for ( i = UNIT_LEN; i >= 0; i--) {
div = (unsigned __int64)pow(10, i);
value = (int)(money / div);
money = money % div;
// if (i==1 && money==0) {
// strcat(szMoney, "整");
// break;
// }
strncat(szMoney, &szCNNum[value*2], 2);
strncat(szMoney, &szUnit[(UNIT_LEN - i)*2], 2);
}
return szMoney;
}