• 中国的数字成英文表示


    public class NumberToWords {
    
      private final String[] tensNames = {
        "",
        " ten",
        " twenty",
        " thirty",
        " forty",
        " fifty",
        " sixty",
        " seventy",
        " eighty",
        " ninety"
      };
    
      private final String[] numNames = {
        "",
        " one",
        " two",
        " three",
        " four",
        " five",
        " six",
        " seven",
        " eight",
        " nine",
        " ten",
        " eleven",
        " twelve",
        " thirteen",
        " fourteen",
        " fifteen",
        " sixteen",
        " seventeen",
        " eighteen",  
        " nineteen"
      };
    
      private String convertLessThanOneThousand(int number) {
        String soFar;
    
        if (number % 100 < 20){
          soFar = numNames[number % 100];
          number /= 100;
        }else {
          soFar = numNames[number % 10];
          number /= 10;
    
          if(soFar.equals("")){
        	  soFar = tensNames[number % 10] + soFar;
          }else{
        	  soFar = tensNames[number % 10] + " and " + soFar;
          }
          number /= 10;
        }
        if (number == 0){
        	return soFar;
        }
        return numNames[number] + " hundred" + soFar;
      }
    
    
      public String convert(long number) {
        // 0 to 999 999 999 999
        if (number == 0) { return "zero"; }
    
        String snumber = Long.toString(number);
    
        // pad with "0"
        String mask = "000000000000";
        DecimalFormat df = new DecimalFormat(mask);
        snumber = df.format(number);
    
        // XXXnnnnnnnnn 
        int billions = Integer.parseInt(snumber.substring(0,3));
        // nnnXXXnnnnnn
        int millions  = Integer.parseInt(snumber.substring(3,6)); 
        // nnnnnnXXXnnn
        int hundredThousands = Integer.parseInt(snumber.substring(6,9)); 
        // nnnnnnnnnXXX
        int thousands = Integer.parseInt(snumber.substring(9,12));    
    
        String tradBillions;
        switch (billions) {
        case 0:
          tradBillions = "";
          break;
        case 1 :
          tradBillions = convertLessThanOneThousand(billions) 
          + " billion ";
          break;
        default :
          tradBillions = convertLessThanOneThousand(billions) 
          + " billion ";
        }
        String result =  tradBillions;
    
        String tradMillions;
        switch (millions) {
        case 0:
          tradMillions = "";
          break;
        case 1 :
          tradMillions = convertLessThanOneThousand(millions) 
          + " million ";
          break;
        default :
          tradMillions = convertLessThanOneThousand(millions) 
          + " million ";
        }
        result =  result + tradMillions;
    
        String tradHundredThousands;
        switch (hundredThousands) {
        case 0:
          tradHundredThousands = "";
          break;
        case 1 :
          tradHundredThousands = "one thousand ";
          break;
        default :
          tradHundredThousands = convertLessThanOneThousand(hundredThousands) 
          + " thousand ";
        }
        result =  result + tradHundredThousands;
    
        String tradThousand;
        tradThousand = convertLessThanOneThousand(thousands);
        result =  result + tradThousand;
    
        // remove extra spaces!
        return result.replaceAll("^\s+", "").replaceAll("\b\s{2,}\b", " ");
      }
    
      /**
       * testing
       * @param args
       */
      public static void main(String[] args) {
    	  NumberToWords nw = new NumberToWords();
    
    	  System.out.println("*** " + nw.convert(1031));
    	  System.out.println("*** " + nw.convert(1030));
        System.out.println("*** " + nw.convert(0));
        System.out.println("*** " + nw.convert(1));
        System.out.println("*** " + nw.convert(36));
        System.out.println("*** " + nw.convert(136));
        System.out.println("*** " + nw.convert(1030));
        System.out.println("*** " + nw.convert(1036));
        System.out.println("*** " + nw.convert(1236));
    
        System.out.println("*** " + nw.convert(3000000010L));
    	  
    	  
        /*
         *** zero
         *** one
         *** sixteen
         *** one hundred
         *** one hundred eighteen
         *** two hundred
         *** two hundred nineteen
         *** eight hundred
         *** eight hundred one
         *** one thousand three hundred sixteen
         *** one million 
         *** two millions 
         *** three millions two hundred
         *** seven hundred thousand 
         *** nine millions 
         *** nine millions one thousand 
         *** one hundred twenty three millions four hundred 
         **      fifty six thousand seven hundred eighty nine
         *** two billion one hundred forty seven millions 
         **      four hundred eighty three thousand six hundred forty seven
         *** three billion ten
         **/
      }
    }
    

  • 相关阅读:
    SQL SERVER将远程服务器的数据库备份到本地文件夹
    c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)
    CentOS 7 服务器配置安装CentOS 7
    String,StringBuffer与StringBuilder
    springmvc常用注解标签详解【转】
    第一个SpringMVC实例和解析(HelloSpringMVC)
    排序算法总结及Java实现
    MySQL实例
    Java集合框架梳理(含经典面试题)
    面试妆容
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5038060.html
Copyright © 2020-2023  润新知