日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql金额数字转成中文_数字转换成汉字金额(转)

發(fā)布時間:2024/1/23 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql金额数字转成中文_数字转换成汉字金额(转) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1?2?3?//測試工程4?5?staticvoidMain(string[]?args)6?7?{8?9?Console.WriteLine("請輸入金額");10?11?stringinputNum=Console.ReadLine();12?13?while(inputNum!="exit")14?15?{16?17?//貨幣數(shù)字轉(zhuǎn)化類18?19?NumCast?nc=newNumCast();20?21?if(nc.IsValidated(inputNum))22?23?{24?25?try26?27?{28?29?stringchineseCharacter=nc.ConvertToChinese(inputNum);30?31?Console.WriteLine(chineseCharacter);32?33?}34?35?catch(Exception?er)36?37?{38?39?Console.WriteLine(er.Message);40?41?}42?43?}44?45?else46?47?{48?49?Console.WriteLine("不合法的數(shù)字或格式");50?51?}52?53?Console.WriteLine("\n請輸入金額");54?55?inputNum=Console.ReadLine();56?57?}58?59?Console.ReadLine();60?61?}62?63?測試結(jié)果如下:64?65?貨幣轉(zhuǎn)化類(NumCast類)功能介紹66?67?1常量的規(guī)定68?69?///70?71?///數(shù)位72?73?///74?75?publicenumNumLevel?{?Cent,?Chiao,?Yuan,?Ten,?Hundred,?Thousand,?TenThousand,?hundredMillon,?Trillion?};76?77?///78?79?///數(shù)位的指數(shù)80?81?///82?83?privateint[]?NumLevelExponent=newint[]?{-2,-1,0,1,2,3,4,8,12};84?85?///86?87?///數(shù)位的中文字符88?89?///90?91?privatestring[]?NumLeverChineseSign=newstring[]?{"分","角","元","拾","佰","仟","萬","億","兆"};92?93?///94?95?///大寫字符96?97?///98?99?privatestring[]?NumChineseCharacter=newstring[]?{"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"};100?101?///102?103?///整(當沒有?角分?時)104?105?///106?107?privateconststringEndOfInt="整";108?109?2:數(shù)字合法性驗證,采用正則表達式驗證110?111?///112?113?///正則表達驗證數(shù)字是否合法114?115?///116?117?///118?119?///120?121?publicboolIsValidated(T?Num)122?123?{124?125?Regex?reg=newRegex(@"^(([0])|([1-9]\d{0,23}))(\.\d{1,2})?$");126?127?if(reg.IsMatch(Num.ToString()))128?129?{130?131?returntrue;132?133?}134?135?returnfalse;136?137?}138?139?3:?獲取數(shù)位?例如?1000的數(shù)位為?NumLevel.Thousand140?141?142?143?///144?145?///獲取數(shù)字的數(shù)位 使用log146?147?///148?149?///150?151?///152?153?privateNumLevel?GetNumLevel(doubleNum)154?155?{156?157?doublenumLevelLength;158?159?NumLevel?NLvl=newNumLevel();160?161?if(Num>0)162?163?{164?165?numLevelLength=Math.Floor(Math.Log10(Num));166?167?for(inti=NumLevelExponent.Length-1;?i>=0;?i--)168?169?{170?171?if(numLevelLength>=NumLevelExponent[i])172?173?{174?175?NLvl=(NumLevel)i;176?177?break;178?179?}180?181?}182?183?}184?185?else186?187?{188?189?NLvl=NumLevel.Yuan;190?191?}192?193?returnNLvl;194?195?}196?197?4:判斷數(shù)字之間是否有跳位,也就是中文中間是否要加零,例如1020?就應(yīng)該加零。198?199?///200?201?///是否跳位202?203?///204?205?///206?207?privateboolIsDumpLevel(doubleNum)208?209?{210?211?if(Num>0)212?213?{214?215?NumLevel?currentLevel=GetNumLevel(Num);216?217?NumLevel?nextLevel=null;218?219?intnumExponent=this.NumLevelExponent[(int)currentLevel];220?221?doublepostfixNun=Math.Round(Num%(Math.Pow(10,?numExponent)),2);222?223?if(postfixNun>0)224?225?nextLevel=GetNumLevel(postfixNun);226?227?if(currentLevel!=null&&nextLevel!=null)228?229?{230?231?if(currentLevel>nextLevel+1)232?233?{234?235?returntrue;236?237?}238?239?}240?241?}242?243?returnfalse;244?245?}246?247?5把長數(shù)字分割為兩個較小的數(shù)字數(shù)組,例如把9999億兆,分割為9999億和0兆,248?249?因為計算機不支持過長的數(shù)字。250?251?///252?253?///是否大于兆,如果大于就把字符串分為兩部分,254?255?///一部分是兆以前的數(shù)字256?257?///另一部分是兆以后的數(shù)字258?259?///260?261?///262?263?///264?265?privateboolIsBigThanTillion(stringNum)266?267?{268?269?boolisBig=false;270?271?if(Num.IndexOf('.')!=-1)272?273?{274?275?//如果大于兆276?277?if(Num.IndexOf('.')>NumLevelExponent[(int)NumLevel.Trillion])278?279?{280?281?isBig=true;282?283?}284?285?}286?287?else288?289?{290?291?//如果大于兆292?293?if(Num.Length>NumLevelExponent[(int)NumLevel.Trillion])294?295?{296?297?isBig=true;298?299?}300?301?}302?303?returnisBig;304?305?}306?307?///308?309?///把數(shù)字字符串由‘兆’分開兩個310?311?///312?313?///314?315?privatedouble[]?SplitNum(stringNum)316?317?{318?319?//兆的開始位320?321?double[]?TillionLevelNums=newdouble[2];322?323?inttrillionLevelLength;324?325?if(Num.IndexOf('.')==-1)326?327?trillionLevelLength=Num.Length-NumLevelExponent[(int)NumLevel.Trillion];328?329?else330?331?trillionLevelLength=Num.IndexOf('.')-NumLevelExponent[(int)NumLevel.Trillion];332?333?//兆以上的數(shù)字334?335?TillionLevelNums[0]=Convert.ToDouble(Num.Substring(0,?trillionLevelLength));336?337?//兆以下的數(shù)字338?339?TillionLevelNums[1]=Convert.ToDouble(Num.Substring(trillionLevelLength?));340?341?returnTillionLevelNums;342?343?}344?345?346?347?6是否以“壹拾”開頭,如果是就可以把它變?yōu)椤笆啊?48?349?boolisStartOfTen=false;350?351?while(Num>=10)352?353?{354?355?if(Num==10)356?357?{358?359?isStartOfTen=true;360?361?break;362?363?}364?365?//Num的數(shù)位366?367?368?NumLevel?currentLevel=GetNumLevel(Num);369?370?intnumExponent=this.NumLevelExponent[(int)currentLevel];371?372?Num=Convert.ToInt32(Math.Floor(Num/Math.Pow(10,?numExponent)));373?374?if(currentLevel==NumLevel.Ten&&Num==1)375?376?{377?378?isStartOfTen=true;379?380?break;381?382?}383?384?}385?386?returnisStartOfTen;387?388?7合并大于兆連個數(shù)組轉(zhuǎn)化成的貨幣字符串389?390?///391?392?///合并分開的數(shù)組中文貨幣字符393?394?///395?396?///397?398?///399?400?privatestringContactNumChinese(double[]?tillionNums)401?402?{403?404?stringuptillionStr=CalculateChineseSign(tillionNums[0],?NumLevel.Trillion,true,?IsStartOfTen(tillionNums[0]));405?406?stringdowntrillionStr=CalculateChineseSign(tillionNums[1],null,true,false);407?408?stringchineseCharactor=string.Empty;409?410?//分開后的字符是否有跳位411?412?if(GetNumLevel(tillionNums[1]*10)==NumLevel.Trillion)413?414?{415?416?chineseCharactor=uptillionStr+NumLeverChineseSign[(int)NumLevel.Trillion]+downtrillionStr;417?418?}419?420?else421?422?{423?424?chineseCharactor=uptillionStr+NumLeverChineseSign[(int)NumLevel.Trillion];425?426?if(downtrillionStr!="零元整")427?428?{429?430?chineseCharactor+=NumChineseCharacter[0]+downtrillionStr;431?432?}433?434?else435?436?{437?438?chineseCharactor+="元整";439?440?}441?442?}443?444?returnchineseCharactor;445?446?}447?448?8:遞歸計算貨幣數(shù)字的中文449?450?///451?452?///計算中文字符串453?454?///455?456?///數(shù)字457?458?///數(shù)位級別?比如1000萬的?數(shù)位級別為萬459?460?///是否以‘壹拾’開頭461?462?///中文大寫463?464?publicstringCalculateChineseSign(doubleNum,?NumLevel?NL?,boolIsDump,boolIsExceptTen)465?466?{467?468?Num=Math.Round(Num,2);469?470?boolisDump=false;471?472?//Num的數(shù)位473?474?NumLevel?currentLevel=GetNumLevel(Num);475?476?intnumExponent=this.NumLevelExponent[(int)currentLevel];477?478?stringResult=string.Empty;479?480?//整除后的結(jié)果481?482?intprefixNum;483?484?//余數(shù)?當為小數(shù)的時候?分子分母各乘100485?486?doublepostfixNun?;487?488?if(Num>=1)489?490?{491?492?prefixNum=Convert.ToInt32(Math.Floor(Num/Math.Pow(10,?numExponent)));493?494?postfixNun=Math.Round(Num%(Math.Pow(10,?numExponent)),2);495?496?}497?498?else499?500?{501?502?prefixNum=Convert.ToInt32(Math.Floor(Num*100/Math.Pow(10,?numExponent+2)));503?504?postfixNun=Math.Round(Num*100%(Math.Pow(10,?numExponent+2)),2);505?506?postfixNun*=0.01;507?508?}509?510?if(prefixNum<10)511?512?{513?514?//避免以‘壹拾’開頭515?516?if(!(NumChineseCharacter[(int)prefixNum]==NumChineseCharacter[1]517?518?&&currentLevel==NumLevel.Ten&&IsExceptTen))519?520?{521?522?Result+=NumChineseCharacter[(int)prefixNum];523?524?}525?526?else527?528?{529?530?IsExceptTen=false;531?532?}533?534?//加上單位535?536?if(currentLevel==NumLevel.Yuan?)537?538?{539?540?當為?“元”?位不為零時?加“元”。541?542?if(NL==null)543?544?{545?546?Result+=NumLeverChineseSign[(int)currentLevel];547?548?//當小數(shù)點后為零時?加?"整"549?550?if(postfixNun==0)551?552?{553?554?Result+=EndOfInt;555?556?}557?558?}559?560?}561?562?else563?564?{565?566?Result+=NumLeverChineseSign[(int)currentLevel];567?568?}569?570?//當真正的個位為零時 加上“元”571?572?if(NL==null&&postfixNun<1&&currentLevel>NumLevel.Yuan&&postfixNun>0)573?574?{575?576?Result+=NumLeverChineseSign[(int)NumLevel.Yuan];577?578?}579?580?}581?582?else583?584?{585?586?//當?前綴數(shù)字未被除盡時,?遞歸下去587?588?NumLevel?NextNL=null;589?590?if((int)currentLevel>=(int)(NumLevel.TenThousand))591?592?NextNL=currentLevel;593?594?Result+=CalculateChineseSign((double)prefixNum,?NextNL,?isDump,?IsExceptTen);595?596?if((int)currentLevel>=(int)(NumLevel.TenThousand))597?598?{599?600?Result+=NumLeverChineseSign[(int)currentLevel];601?602?}603?604?}605?606?//是否跳位607?608?//判斷是否加零,?比如302?就要給三百?后面加零,變?yōu)?三百零二。609?610?if(IsDumpLevel(Num))611?612?{613?614?Result+=NumChineseCharacter[0];615?616?isDump=true;617?618?}619?620?//余數(shù)是否需要遞歸621?622?if(postfixNun>0)623?624?{625?626?Result+=CalculateChineseSign(postfixNun,?NL,?isDump,false);627?628?}629?630?elseif(postfixNun==0&&currentLevel>NumLevel.Yuan?)631?632?{633?634?//當數(shù)字是以零元結(jié)尾的加上?元整?比如1000000一百萬元整635?636?if(NL==null)637?638?{639?640?Result+=NumLeverChineseSign[(int)NumLevel.Yuan];641?642?Result+=EndOfInt;643?644?}645?646?}647?648?returnResult;649?650?}651?652?9:外部調(diào)用的轉(zhuǎn)換方法。653?654?///655?656?///外部調(diào)用的轉(zhuǎn)換方法657?658?///659?660?///661?662?///663?664?665?publicstringConvertToChinese(stringNum)666?667?{668?669?if(!IsValidated(Num))670?671?{672?673?thrownewOverflowException("數(shù)值格式不正確,請輸入小于9999億兆的數(shù)字且最多精確的分的金額!");674?675?}676?677?stringchineseCharactor=string.Empty;678?679?if(IsBigThanTillion(Num))680?681?{682?683?double[]?tillionNums=SplitNum(Num);684?685?chineseCharactor=ContactNumChinese(tillionNums);686?687?}688?689?else690?691?{692?693?doubledNum=Convert.ToDouble(Num);694?695?chineseCharactor=CalculateChineseSign(dNum,null,true,?IsStartOfTen(dNum));696?697?}698?699?returnchineseCharactor;700?701?}702?703?704

總結(jié)

以上是生活随笔為你收集整理的mysql金额数字转成中文_数字转换成汉字金额(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。