`
zjgzpc
  • 浏览: 25172 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA货币数字转换为英文

    博客分类:
  • Java
阅读更多

今天需要完成一个货币类型转换为英文的功能,以下代码可以完成!

 

package com.mupd.export.dao;
public class NumberParser  { 

public static void main(String[] args) { 
    	System.out.println( NumberParser.parse("41.12"));
}

public static String parse(String x) { 
    int z = x.indexOf("."); // 取小数点位置
    String lstr = "", rstr = "";
    if (z > -1) { // 看是否有小数,如果有,则分别取左边和右边
     lstr = x.substring(0, z);
     rstr = x.substring(z + 1);
     } else // 否则就是全部
     lstr = x;

    String lstrrev = reverse(lstr); // 对左边的字串取反
    String[] a = new String[5]; // 定义5个字串变量来存放解析出来的叁位一组的字串

    switch (lstrrev.length() % 3) { 
     case 1 :
      lstrrev += "00";
      break;
     case 2 :
      lstrrev += "0";
      break;
     }
    String lm = ""; // 用来存放转换後的整数部分
    for (int i = 0; i < lstrrev.length() / 3; i++) { 
     a[i] = reverse(lstrrev.substring(3 * i, 3 * i + 3)); // 截取第一个叁位
     if (!a[i].equals("000")) { // 用来避免这种情况:1000000 = one million thousand only
      if (i != 0)
       lm = transThree(a[i]) + " " + parseMore(String.valueOf(i)) + " " + lm; // 加: thousand、million、billion
      else
       lm = transThree(a[i]); // 防止i=0时, 在多加两个空格.
      } else
      lm += transThree(a[i]);
     }

    String xs = ""; // 用来存放转换後小数部分
    if (z > -1)
     xs = "AND CENTS " + transTwo(rstr) + " "; // 小数部分存在时转换小数

    return lm.trim() + " " + xs + "ONLY";
    }

private static String parseFirst(String s) { 
    String[] a =
     new String[] { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE" };
    return a[Integer.parseInt(s.substring(s.length() - 1))];
    }

private static String parseTeen(String s) { 
    String[] a =
     new String[] { 
      "TEN",
      "ELEVEN",
      "TWELEVE",
      "THIRTEEN",
      "FOURTEEN",
      "FIFTEEN",
      "SIXTEEN",
      "SEVENTEEN",
      "EIGHTEEN",
      "NINETEEN" };
    return a[Integer.parseInt(s) - 10];
    }

private static String parseTen(String s) { 
    String[] a =
     new String[] { 
      "TEN",
      "TWENTY",
      "THIRTY",
      "FORTY",
      "FIFTY",
      "SIXTY",
      "SEVENTY",
      "EIGHTY",
      "NINETY" };
    return a[Integer.parseInt(s.substring(0, 1)) - 1];
    }

// 两位
private static String transTwo(String s) { 
    String value = "";
    // 判断位数
    if (s.length() > 2)
     s = s.substring(0, 2);
    else if (s.length() < 2)
     s = "0" + s;

    if (s.startsWith("0")) // 07 - seven 是否小於10
     value = parseFirst(s);
    else if (s.startsWith("1")) // 17 seventeen 是否在10和20之间
     value = parseTeen(s);
    else if (s.endsWith("0")) // 是否在10与100之间的能被10整除的数
     value = parseTen(s);
    else
     value = parseTen(s) + " " + parseFirst(s);
    return value;
    }

private static String parseMore(String s) { 
    String[] a = new String[] { "", "THOUSAND", "MILLION", "BILLION" };
    return a[Integer.parseInt(s)];
    }

// 制作叁位的数
// s.length = 3
private static String transThree(String s) { 
    String value = "";
    if (s.startsWith("0")) // 是否小於100
     value = transTwo(s.substring(1));
    else if (s.substring(1).equals("00")) // 是否被100整除
     value = parseFirst(s.substring(0, 1)) + " HUNDRED";
    else
     value = parseFirst(s.substring(0, 1)) + " HUNDRED AND " + transTwo(s.substring(1));
    return value;
    }

private static String reverse(String s) { 
    char[] aChr = s.toCharArray();
    StringBuffer tmp = new StringBuffer();
    for (int i = aChr.length - 1; i >= 0; i--) { 
     tmp.append(aChr[i]);
     }
    return tmp.toString();
    }
}


 

分享到:
评论

相关推荐

    如何将数字型转换成货币型

    如何将数字型转换成货币型

    java钱币小写转换大写

    java钱币小写转换大写

    java 阿拉伯数字转换成人民币的工具类

    java编写的 阿拉伯数字转换成相应的人民币汉字类

    java写的货币转换

    自己的一个java程序,可以把数字转换成大写. 例如:1转换输出 壹元.

    中文钱币转换

    输入阿拉伯数字的钱币,将其转换为中文,比如1000=一千整;231.01=两百三十一元零一分

    Java经典编程源码基础例程300.zip

    Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 ...

    java常用工具类的使用

    该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒值表示为SQL DATE值,是数据库操作中java.sql.Date的父类。关于数据库...

    libnumbertext:C ++,Java,JavaScript和Python和LibreOffice Calc扩展中的数字到数字名称和货币文本转换库

    适用于C ++ 11,Java,JavaScript和Python的索罗斯解释器 Language-neutral NUMBERTEXT and MONEYTEXT functions for LibreOffice Calc version 1.0.7 (2021-01-31) Numbertext LibreOffice extension, Soros ...

    number2text:将数字(数字)转换为相应的文本

    将数字(数字)转换为相应的文本。 例子: 1个 21 - 二十一 1,120.34 - 一千一百二十三十四 它还允许转换日期和货币金额。 如何使用: // Conversor de número a texto Number2Text conversor = new Number2...

    NumberToCNUtil.java

    汉语中数字大写,把输入的金额转换为汉语中人民币的大写,汉语中货币单位大写,金额的精度,"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖

    Java核心技术II(第8版)

    2.8 XSL转换 第三章 网络 3.1 连接到服务器 3.1.1 套接字超时 3.1.2 因特网地址 3.2 实现服务器 3.2.1 为多个客户端服务 3.2.2 半关闭 3.3 可中断套接字 3.4 发送E-Mail 3.5 建立URL连接 3.5.1 URL和URI 3.5.2 使用...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    Android 国际货币格式化的示例代码

    目前为止,货币格式化最简单的方式是调用 NumberFormat.getCurrencyInstance() 获得 NumberFormat 实例来把数字格式化为货币格式的字符串(当然也可以把字符串转换成数字)。可以根据当前设备的位置来获取 java.util...

    JavaWeb项目网上书店.rar

    一、国际化的相关知识 1、什么是国际化。...4、数字的格式化:货币 5、批量国际化MessageFormat 占位符:aaaa{索引,类型,样式} 索引:0... 类型:date、time、number等 样式: 6、JSTL中的fmt标签

    ICU源码(支持软件国际化的开源中间件)

    ICU4C 是ICU 在 C/C++ 平台下的版本,它提供了 C/C++ 平台强大的国际化开发能力,它可以帮助开发人员根据各地的风俗和语言习惯,实现对数字、货币、时间、日期、和消息格式化和解析,对字符串进行大小写转换、整理、...

    isodata的matlab代码博客-iso_currency:Rust的ISO4217货币代码

    货币的枚举,并具有在数字和字符代码之间转换的简单方法、使用每种货币的地区列表、符号和货币的英文名称。 这方面的数据来自 Country枚举是从唯一的依赖项 - 板条箱重新导出的。 特征 crate 只有一个可选功能 - ...

    Java常用工具类(持续发布,第一部分:日期、字符串、JSON工具类等)

    包含了货币工具类(将数字货币转成大写)、日期工具类(日期格式化、日期相加减、日期差等)、半角和全角字符相互转换、JSON工具类(利用gson工具包)、字符串工具类(非空判断等)

Global site tag (gtag.js) - Google Analytics