展开全部

public class ShuceUtils {

/**

* 将数字转换成中文表示

* @param smallmoney double

* @return String

*/

public static String TranslateMoneyToChn(double smallmoney) {

String value = String.valueOf(smallmoney);

if (null == value || "".equals(value.trim()))

return "零";

String strCheck, strArr, strFen, strDW, strNum, strBig, strNow;

double d = 0;

try {

d = Double.parseDouble(value);

}

catch (Exception e) {

return "数据" + value + "非法!";

}

strCheck = value + ".";

int dot = strCheck.indexOf(".");

if (dot > 12) {

return "数据" + value + "过大,无法处理!";

}

try {

int i = 0;

strBig = "";

strDW = "";

strNum = "";

long intFen = Math.round(d * 100);

strFen = String.valueOf(intFen);

int lenIntFen = strFen.length();

while (lenIntFen != 0) {

i++;

switch (i) {

case 1:

strDW = "分";

break;

case 2:

strDW = "角";

break;

case 3:

strDW = "圆";

break;

case 4:

strDW = "拾32313133353236313431303231363533e4b893e5b19e31333264623864";

break;

case 5:

strDW = "佰";

break;

case 6:

strDW = "仟";

break;

case 7:

strDW = "万";

break;

case 8:

strDW = "拾";

break;

case 9:

strDW = "佰";

break;

case 10:

strDW = "仟";

break;

case 11:

strDW = "亿";

break;

case 12:

strDW = "拾";

break;

case 13:

strDW = "佰";

break;

case 14:

strDW = "仟";

break;

}

switch (strFen.charAt(lenIntFen - 1)) { //选择数字

case '1':

strNum = "壹";

break;

case '2':

strNum = "贰";

break;

case '3':

strNum = "叁";

break;

case '4':

strNum = "肆";

break;

case '5':

strNum = "伍";

break;

case '6':

strNum = "陆";

break;

case '7':

strNum = "柒";

break;

case '8':

strNum = "捌";

break;

case '9':

strNum = "玖";

break;

case '0':

strNum = "零";

break;

}

//处理特殊情况

strNow = strBig;

//分为零时的情况

if ( (i == 1) && (strFen.charAt(lenIntFen - 1) == '0'))

strBig = "整";

//角为零时的情况

else if ( (i == 2) && (strFen.charAt(lenIntFen - 1) == '0')) { //角分同时为零时的情况

if (!strBig.equals("整"))

strBig = "零" + strBig;

}

//元为零的情况

else if ( (i == 3) && (strFen.charAt(lenIntFen - 1) == '0'))

strBig = "圆" + strBig;

//拾-仟中一位为零且其前一位(元以上)不为零的情况时补零

else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) != '零') && (strNow.charAt(0) != '圆'))

strBig = "零" + strBig;

//拾-仟中一位为零且其前一位(元以上)也为零的情况时跨过

else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '零')) {}

//拾-仟中一位为零且其前一位是元且为零的情况时跨过

else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '圆')) {}

//当万为零时必须补上万字

else if ( (i == 7) && (strFen.charAt(lenIntFen - 1) == '0'))

strBig = "万" + strBig;

//拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零

else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) != '零') && (strNow.charAt(0) != '万'))

strBig = "零" + strBig;

//拾万-仟万中一位为零且其前一位(万以上)也为零的情况时跨过

else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '万')) {}

//拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过

else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '零')) {}

//万位为零且存在仟位和十万以上时,在万仟间补零

else if ( (i < 11) && (i > 8) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))

strBig = strNum + strDW + "万零" + strBig.substring(1, strBig.length());

//单独处理亿位

else if (i == 11) {

//亿位为零且万全为零存在仟位时,去掉万补为零

if ( (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))

strBig = "亿" + "零" + strBig.substring(1, strBig.length());

//亿位为零且万全为零不存在仟位时,去掉万

else if ( (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '万') && (strNow.charAt(2) != '仟'))

strBig = "亿" + strBig.substring(1, strBig.length());

//亿位不为零且万全为零存在仟位时,去掉万补为零

else if ( (strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))

strBig = strNum + strDW + "零" + strBig.substring(1, strBig.length());

//亿位不为零且万全为零不存在仟位时,去掉万

else if ( (strNow.charAt(0) == '万') && (strNow.charAt(2) != '仟'))

strBig = strNum + strDW + strBig.substring(1, strBig.length());

//其他正常情况

else

strBig = strNum + strDW + strBig;

}

//拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零

else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) != '零') && (strNow.charAt(0) != '亿'))

strBig = "零" + strBig;

//拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过

else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '亿')) {}

//拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过

else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&

(strNow.charAt(0) == '零')) {}

//亿位为零且不存在仟万位和十亿以上时去掉上次写入的零

else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&

(strNow.charAt(0) == '零') && (strNow.charAt(1) == '亿') &&

(strNow.charAt(3) != '仟'))

strBig = strNum + strDW + strBig.substring(1, strBig.length());

//亿位为零且存在仟万位和十亿以上时,在亿仟万间补零

else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&

(strNow.charAt(0) == '零') && (strNow.charAt(1) == '亿') &&

(strNow.charAt(3) == '仟'))

strBig = strNum + strDW + "亿零" + strBig.substring(2, strBig.length());

else

strBig = strNum + strDW + strBig;

strFen = strFen.substring(0, lenIntFen - 1);

lenIntFen--;

}

return strBig;

}

catch (Exception e) {

return "";

}

}

public static void main(String[] args){

System.out.println(ShuceUtils.TranslateMoneyToChn(123450000));

}

}

本回答由提问者推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java 百千万亿转换_JAVA将数字转表示成相应的钱相关推荐

  1. java 百千万亿转换_一二三四五六七八九十百千万亿

    有些人虽然不会时常想起,但却不会遗忘,因为你已经进入我的心灵深处,越来越深,深入了我的潜意识. 此刻如潮水般侵袭我脑海的全是属于你:一个人的记忆. 不知道东哥是脑抽了,还是脑抽了,又搞那套换位子的老把 ...

  2. python|数值单位(个十百千万亿) 转换成 数字

    假设现在有一表格,表格中有列数据如下: 现在需要将数据中的'万'改为数字10000,比如5万改为50000,5.2万改为52000. 废话不多说,直接进入正题. 先用pandas读取数据之后,对该列数 ...

  3. java 数字翻译成英文_Java实现数字日期翻译成英文单词的工具类案例分享

    这篇文章主要介绍了Java实现将数字日期翻译成英文单词的工具类,结合完整实例形式分析了Java日期转换与字符串操作相关实现技巧,需要的朋友可以参考下 本文实例讲述了Java实现将数字日期翻译成英文单词 ...

  4. java bean与xml转换_Java Bean与xml互相转换的方法分析

    本文实例讲述了Java Bean与xml互相转换的方法.分享给大家供大家参考,具体如下: XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介 ...

  5. java 图片文件 格式转换_Java的图片文件格式转换和线性缩放

    Java的图片文件格式转换和线性缩放 来源:68design.net 2007年07月13日 08:31 图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,推荐用jimi包,可从 htt ...

  6. Java中number数字类型的转换_Java下数字类型的转换 (转)

    Java下数字类型的转换 (转)[@more@] 作者:家居猫 各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数 ...

  7. java银行金额大写转换_Java版 数字金额大写转换

    package com.utils; public class Change { public static void main(String agrs[]) { //整数 System.out.pr ...

  8. java个十百千万位余数_java中求一个整数个十百千位的方法

    展开全部 主要的思想是先将这个整数对10求余,636f707962616964757a686964616f31333337396333得到个位数,再将整数除以10得到个位数以外的其余数(除以10之后因 ...

  9. Java实现gbk utf8 转换_java项目编码格式转换(如GBK转UTF-8)

    昨天突然下了个Java项目,把项目导入到eclipse中,发现项目是gbk编码格式想把项目变为utf-8,但是发现转换格式比较麻烦就写了这个代码,后面改进了下,想到说不定有人也需要就把它写了出来 代码 ...

最新文章

  1. 关于JavaScript中name的意义冲突
  2. python发红包问题_一个关于红包的问题引发的python算法初体验
  3. gis python 桌面,arc-utils-用于Esri ArcGIS桌面软件的Python实用程序-Grant Herbert
  4. Python与JavaWeb的第一次碰撞
  5. java cookie id,我如何在Java中获取会话ID
  6. Struts2.0中ActionInvocation使用
  7. 永远不要低估自己,love your fear.
  8. UnityShader 基于物理的体积光(丁达尔光线)
  9. mysql 多条件求和_技巧|多条件查询求和,你会几种?
  10. 关于宋宝华linux驱动学习视频的读后感
  11. win10输入法突然变繁体解决办法
  12. Unity利用JsonFX解析Json格式文本
  13. Cisco:DHCP自动获取IP地址
  14. 内网穿透保姆级教程——内网穿透建立个人网站、远程控制
  15. 电容笔做的比较好的品牌有哪些?便宜好用的电容笔推荐
  16. 校招Java后端开发面经专栏——序
  17. 【君思智慧园区】产业园区运营服务的创新模式
  18. Enhancer是啥
  19. 做外贸开发客户用的邮件群发软件,同行达40%~70%打开率?
  20. 会oracle能找什么岗位的工作,oracle岗位职责

热门文章

  1. mt6758芯片原理图, mt6758音频语音设计资料文档
  2. 联想 win7 和 苹果macbook 登录密码忘记 解决方法
  3. MT6589开机启动简析
  4. 【Paper】GhostNet: More Features from Cheap Operations
  5. 赛拉图行车、保养、维修常见问题解答
  6. sizebox模型下载_box-sizing解决盒模型和form元素统一风格的问题
  7. 如何远程连接另一台电脑上的打印机~亲测
  8. 毕设论文之Word排版技巧总结
  9. linux和win双系统删除,双系统删除教程详解:Windows(linux)双系统,教你如何删除其中一个!...
  10. VTK学习之路——读取并显示raw体数据文件