小写数字转换成大写数字
前两天看到一道题,关于小写数字转换成大写的。也就是将“1023050405”这样的数字转换为“十亿二千三百零五万零四百零五”。
这个是个算法问题,其它语言也是相通的。
- 其中的难点应该是对零的处理。
我写的代码如下,以Java为例(因为搞安卓的嘛),这里以整型作为参数,如果你感兴趣,可以做一些改动以小数作为参数:
/*** @author Binzo* @date 20161203* @param number 整型参数。例如:1023050405* @return 根据整型参数返回大写数字。例如:十亿二千三百零五万零四百零五*/
public static String convertToSimplifiedChinese(int number){final String[] TAG_DIGIT = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};final String[] TAG_WEIGHT = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "兆"};String numberString = String.valueOf(number);char[] digits = numberString.toCharArray();StringBuffer sb = new StringBuffer();for (int i = 0; i < digits.length; i++) {// 获取每位上的数字dint d = Integer.valueOf(String.valueOf(digits[i]));String digit = TAG_DIGIT[d];// 反转,for循环是低位~高位,反转后即高位~低位int index = digits.length - i - 1;String weight = TAG_WEIGHT[index];if (DEBUG){System.out.printf("index=%d,", index);System.out.printf("digit=%s,", digit);System.out.printf("weight=%s\n", weight);}if (d == 0 && index % 4 == 0) {// 万、亿 作为一个过渡位sb.append(weight);} else if (d == 0) {sb.append(digit);} else if (d == 1 && index % 4 == 1) {// 类似于15,转换为"十五",而不用"一十五"sb.append(weight);} else {sb.append(digit);sb.append(weight);}}if (DEBUG){System.out.printf("%d : ", number);System.out.println(sb.toString());}return sb.toString();
}
在网上可以搜索到很多种版本,毕竟这是一个比较基础的算法题。
比如这篇:http://blog.csdn.net/zgrjkflmkyc/article/details/14517789
或者:https://www.oschina.net/code/snippet_137848_4896
等等,观察了一些实现方法,但最后还是自己写了一个不同的,我觉得我这个版本还是结构相对简洁些的。
一开始,自己觉得这是一个很容易实现的算法,但是真写起来也花了好一会儿时间。而后我又实现了大写中文货币格式、以及大写的美国货币格式。如下图的输出结果所示:
小写数字转换为英文大写货币形式如:
1023150405 对应:
U.S. DOLLARS ONE BILLION,TWENTY-THREE MILLION,ONE HUNDRED AND FIFTY THOUSAND,FOUR HUNDRED AND FIVE ONLY
原理还是跟我这段代码中的是相通的,只是英文的就步骤多了几个,如果你也用得上,欢迎探讨,共同学习。
小写数字转换成大写数字相关推荐
- 将(123)数字转换成大写数字(壹,贰,弎)
此方法 将(123)数字转换成大写数字(壹,贰,弎) RMBUtils.toChineseUnit()
- C/C++小写数字转换成大写数字
#include<stdio.h> void main() { double x,y; char *ch[]={"零","壹","贰&qu ...
- 小写数字转大写_不得不说的Excel小技巧:设置单元格格式将小写金额转换成大写...
大家好,我是小秋,近期一段时间比较忙,没有在今日头条上更新原创文章了.希望朋友们多多见谅,下面与大家分享一个Excel实用小技巧:如何设置单元格格式将小写金额转换成大写? 1.应用场景 在报销单.收据 ...
- C语言自学路之将小写数字完美转换成大写数字
C语言自学路之将小写数字完美转换成大写数字 # define N 6:6位及以内的整数(小数点后不计) PS:中间两条测试数组正确性的可以忽视,我只是每敲一点都喜欢运行测试一下- #include & ...
- 使用 C# 将数字转换成大写人民币
贴段最近在项目中用到的一个函数. 因涉及到财务,需要把数字符转换成大写人民币汉字,于是自己动手写了一个,使用的算法比较笨,各位看客不要笑啊. 可转换数字大小在10亿以下,超过的,就无能为力了,不过大家 ...
- win7计算机名改成大写,处置win7系统将word中的阿拉伯数字转换成大写数字的还原方案...
随着电脑的使用率越来越高,我们有时候可能会遇到对win7系统将word中的阿拉伯数字转换成大写数字进行设置,如果我们需要对win7系统将word中的阿拉伯数字转换成大写数字进行设置时,要怎么处理win ...
- C小程序-将输入的数字转换成大写汉字
C小程序-将输入的数字转换成大写汉字C int money,count=0;int i=0;int moneys[6];//定义了输入数字的最高位数char unit[10][2]={"零& ...
- 阿拉伯数字转换成大写数字
本文转载自http://blog.csdn.net/yeah86/article/details/3456706 之前在CSDN论坛里,看有人Show了一些把中文大写转换成阿拉伯数字的程序代码,自己也 ...
- 将小写人民币转换成大写
将小写人民币转换成大写 public class MoneyUtil { public static String toChinese(String str) { /** 大写数字 */ String ...
最新文章
- 俄罗斯自研Elbrus CPU参数曝光,CEO年近九旬仍未退休
- 纯CSS实现下拉菜单及下拉容器等(纯CSS实现导航条及导航下拉容器)
- CSS 中的内联元素、块级元素以及display的各个属性的特点
- 一些值得好好学习的博客或者网站
- Android -- 无线网络配置信息的管理者WifiConfigStore简介
- java vector pair_STL: list ,set ,pair.map的使用
- 2020年净利润腰斩,麦格纳要转型“造车”?
- 带蒙版的安卓剪辑软件_史上最全的手机剪辑软件测评,最好用的竟然没人听过?!...
- 关于unity打包apk在手机上安装失败(-108)
- android仿京东跑马灯,RecyclerView实现跑马灯效果
- The first GAN——Generative Adversarial Nets
- DNSPod十问Neha Naik:以人民币结算海外IT业务的可能性?
- 写给你看的Python Web 岗位分析,求职必备
- 20个关于可视化图表设计的技巧
- PlatoFarm推出正式版游戏经济模型的特点分析
- 基于大数据的动漫影视可视化分析系统
- Cdn英文的读音音标_根据中文名取英文名2019
- 修改服务器端数据库,问道1.6 开区 服务器环境配置 数据库修改 服务端启动教程...
- Python爬虫之实现百度翻译
- 2021壁纸网站大集合优质壁纸,4k,8k,应有尽有!