当前位置: 首页 > 编程笔记 >

Java实现数字转成英文的方法

梁英喆
2023-03-14
本文向大家介绍Java实现数字转成英文的方法,包括了Java实现数字转成英文的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Java实现数字转成英文的方法。分享给大家供大家参考。具体分析如下:

英文数词,按3位3位区分

Hundred: 100
Thousand:1,000
Million: 1,000,000
Billion: 1,000,000,000
Trillion: 1,000,000,000,000
Quintillion: 1,000,000,000,000,000,000
Sextillion: 1,000,000,000,000,000,000,000
Nonillion: 1,000,000,000,000,000,000,000,000,000,000
Centillion: 1 followed by 303 zeros

所以把数字字符串按3位分割,分别解析

public class NumUtil {
 public static final String[] enNum = { // 基本数词表
 "zero", "one", "tow", "three", "four", "five", "six", "seven", "eight",
  "nine", "ten", "eleven", "twelve", "thirteen", "fourteen",
  "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
  "twenty", "", "", "", "", "", "", "", "", "", "thirty", "", "", "",
  "", "", "", "", "", "", "fourty", "", "", "", "", "", "", "", "",
  "", "fifty", "", "", "", "", "", "", "", "", "", "sixty", "", "",
  "", "", "", "", "", "", "", "seventy", "", "", "", "", "", "", "",
  "", "", "eighty", "", "", "", "", "", "", "", "", "", "ninety" };
 public static final String[] enUnit = { "hundred", "thousand", "million",
  "billion", "trillion", "quintillion" }; // 单位表
 public static void main(String[] args) {
 System.out.println(analyze(1)); // 测试数据
 System.out.println(analyze(21));
 System.out.println(analyze(105));
 System.out.println(analyze(3250));
 System.out.println(analyze(47826));
 System.out.println(analyze(56945781));
 }
 public static String analyze(long num) {
 // long型参数,
 return analyze(String.valueOf(num));
 // 因为long型有极限,所以以字符串参数方法为主
 }
 public static String analyze(String num) {
 // 数字字符串参数
 // 判断字符串是否为数字
 if (!num.matches("\\d+")) {
  return String.format("%s is not number", num);
 }
 num = num.replaceAll("^[0]*([1-9]*)", "$1");
 // 把字符串前面的0去掉
 if (num.length() == 0) {
 // 如果长度为0,则原串都是0
  return enNum[0];
 } else if (num.length() > 9) {
 // 如果大于9,即大于999999999,题目限制条件
  return "too big";
 }
 // 按3位分割分组
 int count = (num.length() % 3 == 0) ? num.length() / 3
  : num.length() / 3 + 1;
 if (count > enUnit.length) {
  return "too big";
 } // 判断组单位是否超过,
 // 可以根据需求适当追加enUnit
 String[] group = new String[count];
 for (int i = num.length(), j = group.length - 1; i > 0; i -= 3) {
  group[j--] = num.substring(Math.max(i - 3, 0), i);
 }
 StringBuilder buf = new StringBuilder(); // 结果保存
 for (int i = 0; i < count; i++) { // 遍历分割的组
  int v = Integer.valueOf(group[i]);
  if (v >= 100) { // 因为按3位分割,所以这里不会有超过999的数
  buf.append(enNum[v / 100]).append(" ").append(enUnit[0])
   .append(" ");
  v = v % 100; // 获取百位,并得到百位以后的数
  if (v != 0) {
   buf.append("and ");
  } // 如果百位后的数不为0,则追加and
  }
  if (v != 0) { // 前提是v不为0才作解析
  if (v < 20 || v % 10 == 0) {
  // 如果小于20或10的整数倍,直接取基本数词表的单词
   buf.append(enNum[v]).append(" ");
  } else { // 否则取10位数词,再取个位数词
   buf.append(enNum[v - v % 10]).append(" ");
   buf.append(enNum[v % 10]).append(" ");
  }
  if (i != count - 1) { // 百位以上的组追加相应的单位
   buf.append(enUnit[count - 1 - i]).append(" ");
  }
  }
 }
 return buf.toString().trim(); // 返回值
 }
}

希望本文所述对大家的java程序设计有所帮助。

 类似资料:
  • 本文向大家介绍python实现将英文单词表示的数字转换成阿拉伯数字的方法,包括了python实现将英文单词表示的数字转换成阿拉伯数字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现将英文单词表示的数字转换成阿拉伯数字的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 本文向大家介绍java实现数字转大写的方法,包括了java实现数字转大写的方法的使用技巧和注意事项,需要的朋友参考一下 java实现数字转大写的方法 说明: 将数字金额转大写,如下: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 本文向大家介绍Python实现把数字转换成中文,包括了Python实现把数字转换成中文的使用技巧和注意事项,需要的朋友参考一下 周末在家,写了个小程序,用于将阿拉伯数字转换化大写中文。程序没经过任何优化,出没经过详细的测试,挂到网上,方便将来有需要的时候直接拿来用。

  • 本文向大家介绍JAVA实现数字大写金额转换的方法,包括了JAVA实现数字大写金额转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JAVA实现数字大写金额转换的方法。分享给大家供大家参考。具体如下: 例子:实现将阿拉伯数字的金额转换成中文大写金额的形式,例如: ¥1011 → 壹仟零壹拾壹元整。 大写数字为:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿 希望本文所述对

  • 本文向大家介绍java编程中字节流转换成字符流的实现方法,包括了java编程中字节流转换成字符流的实现方法的使用技巧和注意事项,需要的朋友参考一下 java编程中字节流转换成字符流的实现方法 以上这篇java编程中字节流转换成字符流的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Java实现数组反转翻转的方法实例,包括了Java实现数组反转翻转的方法实例的使用技巧和注意事项,需要的朋友参考一下 数组翻转的方法(java实现),数组翻转,就是将数组倒置,例如原数组为:{"a","b","c","d"},那么翻转后的数组为{"d","c","b","a"}。 【方法一】使用集合个工具类: Collections.reverse(ArrayList) 将数组进行反