java 12345 一万二千_java中怎么将 112345 变成 十一万二千三百四十五

展开全部

package com.lxq.util;

import java.text.DecimalFormat;

/**

*

* @author li@zi 将数字转化为大636f707962616964757a686964616f31333330343833写金额

*

*/

public class MoneyUtils

{

public MoneyUtils()

{

}

// 将数字格式化为两位小数的字符串

public static String round(double value)

{

DecimalFormat format = new DecimalFormat("#.##");

String roundValue = format.format(value);

if (roundValue.length() - roundValue.indexOf(".") == 2)

roundValue = roundValue + "0";

return roundValue;

}

// 将数字型字符串格式化为两位小数字符串

public static String round(String value)

{

double roundValue = Double.valueOf(value.trim()).doubleValue();

return round(roundValue);

}

public static String changeToBig(double value)

{

if (value == 0.0D)

{

return "零";

} else

{

String svalue = String.valueOf(value);

return changeToBig(svalue);

}

}

public static String changeToBig(String value)

{

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

return "零";

value = round(value);//四舍五入

String strCheck, 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 = (long) (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 = "拾";

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 "";

}

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值