1. 程式人生 > >數字變成大寫金額

數字變成大寫金額

import java.math.BigDecimal; public class CnUpperCaserUtil {     /**      * 漢語中數字大寫      */     private static final String[] CN_UPPER_NUMBER = { "零", "壹", "貳", "叄", "肆",             "伍", "陸", "柒", "捌", "玖" };     /**      * 漢語中貨幣單位大寫,這樣的設計類似於佔位符      */     private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元",             "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟", "兆", "拾",             "佰", "仟" };     /**      * 特殊字元:整      */     private static final String CN_FULL = "整";     /**      * 特殊字元:負      */     private static final String CN_NEGATIVE = "負";     /**      * 金額的精度,預設值為2      */     private static final int MONEY_PRECISION = 2;     /**      * 特殊字元:零元整      */     private static final String CN_ZEOR_FULL = "零元" + CN_FULL;     /**      * 把輸入的金額轉換為漢語中人民幣的大寫      *      * @param numberOfMoney      *            輸入的金額      * @return 對應的漢語大寫      */     public static String number2CNMontrayUnit(BigDecimal numberOfMoney) {         StringBuffer sb = new StringBuffer();         // -1, 0, or 1 as the value of this BigDecimal is negative, zero, or         // positive.         int signum = numberOfMoney.signum();         // 零元整的情況         if (signum == 0) {             return CN_ZEOR_FULL;         }         //這裡會進行金額的四捨五入         long number = numberOfMoney.movePointRight(MONEY_PRECISION)                 .setScale(0, 4).abs().longValue();         // 得到小數點後兩位值         long scale = number % 100;         int numUnit = 0;         int numIndex = 0;         boolean getZero = false;         // 判斷最後兩位數,一共有四中情況:00 = 0, 01 = 1, 10, 11         if (!(scale > 0)) {             numIndex = 2;             number = number / 100;             getZero = true;         }         if ((scale > 0) && (!(scale % 10 > 0))) {             numIndex = 1;             number = number / 10;             getZero = true;         }         int zeroSize = 0;         while (true) {             if (number <= 0) {                 break;             }             // 每次獲取到最後一個數             numUnit = (int) (number % 10);             if (numUnit > 0) {                 if ((numIndex == 9) && (zeroSize >= 3)) {                     sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);                 }                 if ((numIndex == 13) && (zeroSize >= 3)) {                     sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);                 }                 sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);                 sb.insert(0, CN_UPPER_NUMBER[numUnit]);                 getZero = false;                 zeroSize = 0;             } else {                 ++zeroSize;                 if (!(getZero)) {                     sb.insert(0, CN_UPPER_NUMBER[numUnit]);                 }                 if (numIndex == 2) {                     if (number > 0) {                         sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);                     }                 } else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {                     sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);                 }                 getZero = true;             }             // 讓number每次都去掉最後一個數             number = number / 10;             ++numIndex;         }         // 如果signum == -1,則說明輸入的數字為負數,就在最前面追加特殊字元:負         if (signum == -1) {             sb.insert(0, CN_NEGATIVE);         }         // 輸入的數字小數點後兩位為"00"的情況,則要在最後追加特殊字元:整         if (!(scale > 0)) {             sb.append(CN_FULL);         }         return sb.toString();     }     public static void main(String[] args) {         double money = 2020004.01;         BigDecimal numberOfMoney = new BigDecimal(money);         String s = CnUpperCaserUtil.number2CNMontrayUnit(numberOfMoney);         System.out.println("你輸入的金額為:【"+ money +"】   #--# [" +s.toString()+"]");     } }

相關推薦

數字變成大寫金額

import java.math.BigDecimal; public class CnUpperCaserUtil {     /**      * 漢語中數字大寫      */     private static final String[] CN_UPPER_N

java將小寫數字變成大寫輸出

import java.util.Scanner; public class Cap { //方法1 將小寫數字變成大寫並輸出switch private static void capitalNumber1(int nu){switch(nu){case 0:System

javascript實現將數字金額變成中文大寫金額

/*     功能:將貨幣數字(阿拉伯數字)(小寫)轉化成中文(大寫)      引數:Num為字元型,小數點之後保留兩位,例:Arabia_to_Chinese("1234.06")     說明:1.目前本轉換僅支援到 拾億(元) 位,金額單位為元,不能為萬元,最小單位為

人民幣數字金額大寫金額

print ringbuf 0.11 println unit sta 大寫 pre main public class t { public static String Trans2RMB(String money) { int index = money.in

(轉)php數字金額轉中文大寫金額

func 字符串 獲取字符串長度 依次 reac 字符串長度 單位 ever -- function floatohz($value){ $result=‘‘; $v_a=array(‘分‘,‘角‘,‘零‘,‘塊‘,‘十‘,‘,百‘,‘千‘,‘萬‘,‘十‘

用vue將數字轉為中文大寫金額

記得引入vue.js檔案 <html lang="en"> <head> <meta charset="UTF-8"> <title>用vue將數字轉為中文大寫金額</title> <script sr

php數字轉人民幣金額大寫

numToRmb.php &lt;?php header("content-type:text/html;charset=utf-8"); function numToRmb($num){ $rmbNum = ['零','壹','貳','叄','肆','伍','陸','柒','捌','玖']

Word 用 VBA 函式將數字轉換為大寫金額

'自定義函式 NTDX 將數字金額轉換為財務要求的大寫金額(NTDX:Number To DaXie) Public Function NTDX(A As Variant) Set Excel = CreateObject("excel.Applicat

java實現數字金額轉換中文大寫金額

直接貼程式碼吧! public class CnNumberUtils { private final static Logger logger = LoggerFactory.getLogger(CnNumberUtils.class);

js將阿拉伯數字轉換成大寫金額

function changeMoneyToChinese(money){ var cnNums = new Array("零","壹","貳","叄","肆","伍","陸","柒","捌","玖"); //漢字的數字 var cnIntRadice

人民幣大寫金額轉換為數字

人民幣大寫金額分為數字和單位兩種漢字型別,“零壹貳叄肆伍陸柒捌玖”分別代表數字“0123456789”,“分角拾佰仟萬億”分別代表“0.01 0.1 10 100 1000 100000000”,除此之外還有一些漢字具有補充含義,比如“元”,“整”,“正”,但是這些漢字並不

JS實現 阿拉伯數字金額轉換為中文大寫金額 可以處理負值

JS實現 阿拉伯數字金額轉換為中文大寫金額 可以處理負值 //************************* 把數字金額轉換成中文大寫數字的函式(可處理負值) *********************************// function changeNumMoneyToChinese(

金額大小寫轉化、阿拉伯數字大寫數字大寫數字轉阿拉伯數字

題:請寫個程式,將類似下面的大寫金額轉化為阿拉伯數字。 大寫金額樣例:玖仟伍佰零玖億壹佰零玖萬玖仟伍佰壹拾捌元整。 實現方式: 1、先來一個看起來比較高大上的有技巧的更適合裝逼的一種方式:利用函式 str_replace 來實現 $a = "玖仟伍佰零玖億壹佰零玖萬

用JavaScript將數字轉換為大寫金額

感覺以後會用到,記錄下來 var digitUppercase = function(n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '貳', '叄', '肆',

JQuery 數字金額轉換為大寫金額

function Arabia_to_Chinese(Num) {             debugger;             for (i = Num.length - 1; i >= 0; i--) {                 Num = Num.r

用Python3實現的一個數字轉漢字大寫金額原始碼

#! /bin/python # -*- coding:utf-8 -*- from decimal import Decimal from decimal import getcontext num_to_ch_dic = { 0:'零', '.':'點', 1:'壹'

PHP數字金額轉換大寫金額

圓角 mas str cap utf-8 dem substr 謝謝 array 早些年做CRM用到的一個金額轉換函數,今天從舊項目中拿出來記錄一下。金額轉換的函數方法有很多,都很不錯。不過這個是小崔剛工作的時候寫的一個轉換函數,多少還是有點紀念意義。如有問題請朋友們指出,

人民幣 小寫金額轉換為大寫金額

nan out lac num 大寫 tput urn group substring ### 人民幣 小寫金額轉換為大寫金額

步步為營-84-數字轉化為金額的Js

amp var lac close i++ reverse length tof span 說明:來不及細說了,老鐵快上車 function fmoney(s, n) { console.log(s); n = n

c# 財務報表數字大寫的方法

turn 方法 name 絕對值 人民幣 round || 報表 漢語 /// <summary>/// 數字轉大寫/// </summary>/// <param name="Num">數字</param>/// <