// 将数字转换成人民币
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>using namespace std;vector<string> units = {"","拾", "佰", "千", "万", "亿"};
vector<string> chNums = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
vector<int> bits;
bool last_zero;// bits存的是从低位到高位的数字 begin到end数字位数上升
string change(int begin, int end)
{   int pos = 0;string ret, tmp;bool add_zero = false;// 如果上一轮存在后缀0 则判断本轮是否存在前导0 如果存在则不需要考虑前一轮的后缀0// 否则需要加上前一轮的0if(bits[end - 1] != 0 && last_zero){add_zero = true;}// 更新是否存在后缀0last_zero = bits[begin] == 0 ? true : false;while(begin < end && bits[begin] == 0){begin++;pos++;}for(; begin < end; begin++, pos++){tmp = "";if(bits[begin] != 0){tmp += chNums[bits[begin]];tmp += units[pos];}else if(bits[begin - 1] != 0){// begin - 1不可能小于0,因为如果begin = 0, bits[begin] = 0, 在开始已经移动到一个不为0的位置tmp += chNums[0];}// 将tmp加到ret首部ret = tmp + ret;}if(add_zero){ret = chNums[0] + ret;}return ret;
}string transform(int n)
{bits.clear();last_zero = false;string ret, tmp;// 每四位分开处理 分别是亿, 万, 一元为基础单位while(n != 0){int res = n % 10;bits.push_back(res);n /= 10;}int len = bits.size();if(len > 8){tmp = change(8, len);if(tmp.size()){ret += tmp + "亿";}}if(len > 4){tmp = change(4, min(len, 8));if(tmp.size()){ret += tmp + "万";}}tmp = change(0, min(len, 4));if(tmp.size()){ret += tmp;}ret += "元";return ret;
}int main(){// for(int i = 0; i < 100; i++){//     int n = rand() * rand();//     string ans = transform(n);//     cout<<"n = "<<n<<" trans str= "<<ans<<endl;// }int n = 1070078010;string ans = transform(n);cout<<"n = "<<n<<" trans str= "<<ans<<endl;return 0;
}

阿拉伯整数转成人民币表示相关推荐

  1. 人民币金额由阿拉伯数值转换成汉字大写数值的函数

    分成四个步骤: 1.数字的转化.阿拉伯数字转换为汉字大写字符 2.整数部分的转化. 分节:四位一组,从个位开始分节 每节转化为汉字大写数值:比如"1234"转化成 "壹仟 ...

  2. JAVA浮点数浮点数转换成人民币读法

    侵删! 在<疯狂JAVA讲义>第4章最后练习题中,第5题:编写一个程序,将浮点数转换成人民币读法字符串,例如,将1006.33转换成一千零六元三角三分. 这个题主要是一个逻辑判断的过程.首 ...

  3. 数值转换成人民币大写的一个类

    网上有许多将数值转换成人民币大写的代码,其中有不少写得很好的.昨天在Csdn上浏览,觉得这个比较简洁,但也有几点小Bug,稍加整理,觉得仍然与财务表达方式有不一致的地方,故先贴上来,请大家看看. pu ...

  4. 浮点数字转换成人民币的大写字体

    新开博客,贴上一段平常时写的代码,权当记录和分享. 下面是代码块(有比较详细的注释,转换过程中需要注意的是0的处理): //浮点数字转换成人民币的大写字体 import java.util.Scann ...

  5. Vue.js阿拉伯数字转化成人民币的中文

    // 数字金额转化成人民币的中文 export function numberToChinese(money) {//汉字的数字var cnNums = new Array("零" ...

  6. js中将 整数转成字符,,将unicode 编码后的字符还原出来的方法。

    一.将整数转成字符: String.fromCharCode(17496>>8,17496&0xFF,19504>>8,19504&0xFF,12848> ...

  7. 把整数转换成2的n次方的和数组

    为什么80%的码农都做不了架构师?>>>    大概这样:125 => [1, 4, 8, 16, 32, 64] 写几种实现: Ruby: 2.3.1 :022 > 1 ...

  8. 整数转化成字符串; 字符串转换为整数

    整数转化成字符串: 字符串转换为整数 /*整数转化成字符串*/ char *IntToStr(int num, char str[]) {int i = 0, j = 0;char temp[100] ...

  9. c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为八进制字符串(char [])...

    c语言中将整数转换成字符串 Given an ASCII string (char[]) and we have to convert it into octal string (char[]) in ...

最新文章

  1. 机器学习入门(21)— 感受野概念
  2. 【深度学习】with torch.no_grad的作用
  3. [architecture]-ARMV8的RAS Extension(Reliability、Availability、Serviceability)介绍
  4. java中有哪几种注释方式_在 Java 中, 有多种注释方法,其中 __________ 适用于单行注释。...
  5. SAP Spartacus routing参数的权重和HTTP校验逻辑
  6. 个人笔记上传 -- redis安装
  7. SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的
  8. Spring使用json转换工具
  9. opencv19:轮廓凸包,距离与匹配
  10. 央行企业征信异议处理条件及流程
  11. Android中TextView加横线的属性
  12. 雷电模拟器设置在WiFi设置代理不生效
  13. 仿携程oracle课程设计,一个不错的仿携程自定义数据下拉选择select
  14. 全国各省份名义GDP、实际GDP、GDP平减指数(以2008年为基期,2008-2018年)
  15. 判断大学生体侧项目中立定跳远成绩的等级
  16. ultraedit编译java_在UltraEdit中编译和运行Java程序
  17. 关于地图偏移问题的解答
  18. envi读取格式ang 还是mtl_ENVI学习笔记一 软件入门
  19. 解决vmware 本地连接时出错:地址仍未与网络终结点关联
  20. Revit二次开发-自动线性尺寸标注

热门文章

  1. codeforces global round 23
  2. Excel如何利用公式向导截取右侧文本指定内容?
  3. 做幼儿教育培训类型的网站注意事项
  4. 两台电脑其中一台无法ping通的问题
  5. 一对一,屏对屏,菊风远程同屏解决方案,助力多行业实现数字化协同
  6. HDU 1811 Rank of Tetris
  7. 包子笔记 - 德隆大师在高谈阔论赚大钱的要点
  8. OFDM学习笔记(八)(MC-CDMA)
  9. C# DataTable(System.Data)
  10. windows vs2013~2015 MS-MPI v8.1 环境配置