国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java實現數字轉成英文的方法

2019-11-26 15:10:59
字體:
來源:轉載
供稿:網友

本文實例講述了Java實現數字轉成英文的方法。分享給大家供大家參考。具體分析如下:

英文數詞,按3位3位區分

Hundred: 100Thousand:1,000Million: 1,000,000Billion: 1,000,000,000Trillion: 1,000,000,000,000Quintillion: 1,000,000,000,000,000,000Sextillion: 1,000,000,000,000,000,000,000Nonillion: 1,000,000,000,000,000,000,000,000,000,000Centillion: 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("http://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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修文县| 呼和浩特市| 嘉鱼县| 延川县| 通榆县| 平利县| 密山市| 威远县| 张掖市| 通榆县| 沭阳县| 土默特左旗| 广汉市| 东城区| 海门市| 桓仁| 恩施市| 石泉县| 鹤峰县| 黑山县| 威信县| 德惠市| 淅川县| 玉龙| 霍邱县| 山西省| 伊川县| 延庆县| 高清| 霍山县| 林甸县| 新乐市| 秦安县| 喜德县| 曲靖市| 日照市| 普兰店市| 中江县| 德令哈市| 桦甸市| 石家庄市|