?? num_chg.cpp
字號:
#include <iostream>
#include <string>
#include <stdlib.h>
#include <math.h>
using namespace std;
string ConvertnumberCaps(long double numberfloat)
{
long double numberSum = fabs(numberfloat);
long int temp_i = (long int)numberSum; /**//* 整數(shù)部分 */
float temp_f = numberSum - temp_i; /**//* 小數(shù)部分 */
int digit = 0, i, j, k, num_i;
string number("");
char num[20], *p;
char name[][3] = {"點(diǎn)","拾","佰","仟","萬","億"};
char numchar[][3] = {"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"};
if(numberfloat<0.00) /**//* 判斷是否是負(fù)數(shù) */
{
number+="負(fù)";
}
ltoa(temp_i, num, 10); /**//* 整數(shù)部分轉(zhuǎn)換成字符串后在處理 */
p = num;
digit = strlen(num); /**//* 整數(shù)部分位數(shù) */
/**//*--------處理整數(shù)部分 start--------*/
for(i = 1; i <= digit; i ++)
{
k = (digit - i) % 4;
if(isdigit(*p)) /**//* 判斷是否為十進(jìn)制數(shù) */
{
num_i = *p & 0xF; /**//* 把字符轉(zhuǎn)換成數(shù)字,比如 '0'-> 0,'1' -> 1*/
/**//*--------轉(zhuǎn)換數(shù)字開始---------*/
if(num_i)
{
number = number+ numchar[num_i];
}
else
{
if(k && (*(p + 1) &0xF))
number += "零";
}
/**//*--------轉(zhuǎn)換數(shù)字結(jié)束-------*/
/**//*---------添加計(jì)數(shù)單位開始----*/
if(k)
{
if(num_i)
number = number + name[k];
}
else
{
j = digit - i;
if(j)
number = number + name[j/4 + 3];
}
/**//*--------添加計(jì)數(shù)單位結(jié)束--------*/
p++;
}
else
{
number = "遇到非數(shù)字退出!";
return number;
}
}
if(temp_f>0.01)
number+="點(diǎn)"; /**//* 若還有小數(shù)部分,加“點(diǎn)” */
/**//*--------處理整數(shù)部分 End --------*/
/**//*--------處理小數(shù)部分 start--------*/
if(temp_f > 0.001)
{
if(1) number = number + numchar[(int)(temp_f*10)];
if((int)(temp_f*100)%10) number = number + numchar[(int)(temp_f*100)%10];
}
/**//*--------處理小數(shù)部分 End--------*/
return number;
}
int main()
{
long double x = 33.20;
cout << "輸入數(shù)字:";
cin >> x;
cout << "翻譯后數(shù)字為:";
string number = ConvertnumberCaps(x);
cout << number <<endl;
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -