最近看到一个把一个浮点数转化为汉字人民币的小题,感觉很有意思就去用java实现了一下,没想到没有想得那么简单,在网上搜了一下也不近人意,经过几次修改后,现在实现了,现在分享一下。

一、当输入一个浮点数后,我们要把它的整数部分和小数部分取出来。

二、然后把相应的整数、小数部分转化为汉字读法。

三、按照汉语的读法,不能存在零仟、零佰、零拾这样的读法但可以存在零万、零元等读法,这时候我们壹仟零佰零拾零陆圆把零佰、零拾这样的替换为零,变为壹仟零零陆圆,我们把连续为零零的替换为零就OK了。

package test;

public class NumToRmb{
private static String[] hangArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
private static String[] unitArr = { "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰" };
private static String[] unitXiaoArr = { "分", "角" }; // 把一个浮点数分为整数和小数
public static String[] divide(double num) {
long zheng = (long) num;
long xiao = Math.round((num - zheng) * 100);
String[] arr = new String[] { String.valueOf(zheng), String.valueOf(xiao) };
return arr;
}
// 把一个4位数转化为汉字
public static String toHantr(double numStr) {
if (numStr < 0) {
System.out.print("请输入一个整数");
}
String[] arr1 = divide(numStr);
// 得到整数部分
String zheng = arr1[0];
// 得到小数部分
String xiao = arr1[1];
String result = "";
// 处理整数部分
int numLen = zheng.length(); for (int i = 0; i < numLen; i++) {
// 得到第i位的数值
int num = zheng.charAt(i) - '0';
// 数值的汉字表示
result += hangArr[num] + unitArr[numLen - 1 - i];
}
// 处理小数部分
int sumLen = xiao.length();
for (int i = 0; i < sumLen; i++) {
if (i > 2)
break;// 只精确到后两位
// 得到第i位的数值
int xnum = xiao.charAt(i) - '0';
// 数值的汉字表示
result += hangArr[xnum] + unitXiaoArr[sumLen - 1 - i];
}
// //替换所有零拾,零百,零仟为零
result = result.replaceAll("零拾", "零");
result = result.replaceAll("零佰", "零");
result = result.replaceAll("零仟", "零");
//把零零替换为零
if (result.indexOf("零零") != -1) {
result = result.replaceAll("零零", "零");
}
result = result.replaceAll("零亿", "亿");
result = result.replaceAll("零万", "万");
result = result.replaceAll("零圆", "圆"); return result;
}
public static void main(String[] args) {
System.out.print(toHantr(1213301.56));
}
}

人民币金额转化汉字的java写法的更多相关文章

  1. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  2. 【转载】C#工具类:人民币金额转换为中文大写

    在涉及到金融业务这一块的系统设计中,时常能够遇到的情况是需要将阿拉伯数字的人民币金额自动转换为中文的大写金额.现在互联网上也有很多网站提供此类服务,只要你输入人民币的阿拉伯数字金额,输入后自动给你转换 ...

  3. ACM java写法入门

    打2017icpc沈阳站的时候遇到了大数的运算,发现java与c++比起来真的很赖皮,竟然还有大数运算的函数,为了以后打比赛更快的写出大数的算法并且保证不错,特意在此写一篇博客, 记录java的大数运 ...

  4. Python TIPS上一道关于人民币金额小写转大写的题

    人民币金额打印 题目链接:here.我发现我写的好复杂,但万幸编码还算符合人类,看了其他答案,感觉都是天书. #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  5. 基于opencv将视频转化为字符串Java版

    基于opencv将视频转化为字符串Java版 opencv java  先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...

  6. C# 使用TimeSpan秒数转化为时分秒的写法

    1.TimeSpan的生成方法 // 参数: // ticks: // A time period expressed in 100-nanosecond units. public TimeSpan ...

  7. java数字金额转化为中文金额

    public static String digitUppercase(double n){String fraction[] = {"角", "分"};Str ...

  8. java-汉字转化拼音(纯java)

    1.转换所有的拼音 import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; public cl ...

  9. 获取汉字拼音 Java

    两种方法:一个是使用btye数组,一个是引入jar包进行操作. 1. public class CharacterParser { private static int[] pyvalue = new ...

随机推荐

  1. Python 字典(联合内存、联合数组)

    字典 Python有一个内建数据类型是字典(Dictionaries).字典在某些语言中可能称为“联合内存”("associative memories'')或“联合数组”("as ...

  2. JAVA设计模式——第 4 章 多例模式【Multition Pattern】(转)

    一个国家有多个皇帝这种情况有没有?还确实有,就出现在明朝,那三国期间的算不算,不算!因为各自称帝,各有各的地盘,国号不同.大家还记得那首诗<石灰吟>吗?作者是谁?于谦,他是被谁杀死的?明英 ...

  3. 算法笔记_233:二阶魔方旋转(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下:x轴正向:绿x轴 ...

  4. 〖Linux〗转换Socks Proxy为Http Proxy

    使用工具,privoxy,官网: http://www.privoxy.org/ socks5 proxy设定方法: autossh -CgNfD  0.0.0.0:1080 vps-lxb sock ...

  5. Spring Cloud Edgware Release Notes

    Spring Cloud Edgware builds on Spring Boot 1.5.x. Renamed starters A number of starters did not foll ...

  6. Easyui入门视频教程 第10集---Messager的使用

    Easyui入门视频教程 第10集---Messager的使用 <script type="text/javascript"> function show(){ $.m ...

  7. Solr删除managedschema

    一.创建solr核心 solr createcore 二.删除managedschema managedschema是solr自动生成的,里面包含大量无用配置. solr是检查用户定义的schema. ...

  8. 【转】Kafka 之 中级

    摘要: Kafka配置介绍,原理介绍及生产者,消费者Java基本使用方法. 1.    配置 Ø  Broker主要配置 参数 默认值 说明(解释) broker.id =0   每一个broker在 ...

  9. 【虚拟化系列】VMware vSphere 5.1 虚拟机管理

        在上一博文中我们安装了强大的VMware vCenter管理中心,通过VMware vSphere Client连接到VMware vCenter管理中心, vSphere 的两个核心组件是 ...

  10. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...