數字、金額轉中文大寫

来源:http://www.cnblogs.com/xytmj/archive/2017/09/28/7606717.html
-Advertisement-
Play Games

public static class NumberToChinese { #region 數值轉為大寫(不帶圓角分) /// <summary> /// 數值轉為大寫(不帶圓角分) /// </summary> /// <param name="LowerMoney"></param> /// < ...


public static class NumberToChinese
{
#region 數值轉為大寫(不帶圓角分)
/// <summary>
/// 數值轉為大寫(不帶圓角分)
/// </summary>
/// <param name="LowerMoney"></param>
/// <returns></returns>
public static string FloatToChinese(string LowerMoney)
{
string functionReturnValue = null;
bool IsNegative = false; // 是否是負數
if (LowerMoney.Trim().Substring(0, 1) == "-")
{
// 是負數則先轉為正數
LowerMoney = LowerMoney.Trim().Remove(0, 1);
IsNegative = true;
}
string strLower = null;
string strUpart = null;
string strUpper = null;
int iTemp = 0;
// 保留兩位小數 123.489→123.49  123.4→123.4
LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
if (LowerMoney.IndexOf(".") > 0)
{
if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
{
LowerMoney = LowerMoney + "0";
}
}
else
{
LowerMoney = LowerMoney + ".00";
}
strLower = LowerMoney;
iTemp = 1;
strUpper = "";
while (iTemp <= strLower.Length)
{
switch (strLower.Substring(strLower.Length - iTemp, 1))
{
case ".":
strUpart = "點";
break;
case "0":
strUpart = "零";
break;
case "1":
strUpart = "壹";
break;
case "2":
strUpart = "貳";
break;
case "3":
strUpart = "叄";
break;
case "4":
strUpart = "肆";
break;
case "5":
strUpart = "伍";
break;
case "6":
strUpart = "陸";
break;
case "7":
strUpart = "柒";
break;
case "8":
strUpart = "捌";
break;
case "9":
strUpart = "玖";
break;
}

switch (iTemp)
{
case 1:
strUpart = strUpart + "";//分
break;
case 2:
strUpart = strUpart + "";//角
break;
case 3:
strUpart = strUpart + "";
break;
case 4:
strUpart = strUpart + "";
break;
case 5:
strUpart = strUpart + "拾";
break;
case 6:
strUpart = strUpart + "佰";
break;
case 7:
strUpart = strUpart + "仟";
break;
case 8:
strUpart = strUpart + "萬";
break;
case 9:
strUpart = strUpart + "拾";
break;
case 10:
strUpart = strUpart + "佰";
break;
case 11:
strUpart = strUpart + "仟";
break;
case 12:
strUpart = strUpart + "億";
break;
case 13:
strUpart = strUpart + "拾";
break;
case 14:
strUpart = strUpart + "佰";
break;
case 15:
strUpart = strUpart + "仟";
break;
case 16:
strUpart = strUpart + "萬";
break;
default:
strUpart = strUpart + "";
break;
}

strUpper = strUpart + strUpper;
iTemp = iTemp + 1;
}

strUpper = strUpper.Replace("零拾", "零");
strUpper = strUpper.Replace("零佰", "零");
strUpper = strUpper.Replace("零仟", "零");
strUpper = strUpper.Replace("零零零", "零");
strUpper = strUpper.Replace("零零", "零");
strUpper = strUpper.Replace("零角零分", "");//整
strUpper = strUpper.Replace("零分", "");//整
strUpper = strUpper.Replace("零角", "零");
strUpper = strUpper.Replace("零億零萬零點", "億點");//圓
strUpper = strUpper.Replace("億零萬零點", "億點");//圓
strUpper = strUpper.Replace("零億零萬", "億");
strUpper = strUpper.Replace("零萬零點", "萬點");//圓
strUpper = strUpper.Replace("零億", "億");
strUpper = strUpper.Replace("零萬", "萬");
strUpper = strUpper.Replace("零點", "點");//圓
strUpper = strUpper.Replace("零零", "零");

if (strUpper.Substring(strUpper.Length - 2, 2) == "點零")//最後2個數為.0,則去掉
{
strUpper = strUpper.Substring(0, strUpper.Length - 2);
}
if (strUpper.Substring(strUpper.Length - 1, 1) == "零")//最後一個數為0,則去掉
{
strUpper = strUpper.Substring(0, strUpper.Length - 1);
}
// 對壹圓以下的金額的處理
if (strUpper.Substring(0, 1) == "點")//圓
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "零")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
//if (strUpper.Substring(0, 1) == "角")
//{
// strUpper = strUpper.Substring(1, strUpper.Length - 1);
//}
//if (strUpper.Substring(0, 1) == "分")
//{
// strUpper = strUpper.Substring(1, strUpper.Length - 1);
//}
//if (strUpper.Substring(0, 1) == "整")
//{
// strUpper = "零圓整";
//}
functionReturnValue = strUpper;

if (IsNegative == true)
{
return "負" + functionReturnValue;
}
else
{
return functionReturnValue;
}
}

#endregion 數值轉為大寫(不帶圓角分)

#region 金額轉為大寫金額
/// <summary>
/// 金額轉為大寫金額
/// </summary>
/// <param name="LowerMoney"></param>
/// <returns></returns>
public static string MoneyToChinese(string LowerMoney)
{
string functionReturnValue = null;
bool IsNegative = false; // 是否是負數
if (LowerMoney.Trim().Substring(0, 1) == "-")
{
// 是負數則先轉為正數
LowerMoney = LowerMoney.Trim().Remove(0, 1);
IsNegative = true;
}
string strLower = null;
string strUpart = null;
string strUpper = null;
int iTemp = 0;
// 保留兩位小數 123.489→123.49  123.4→123.4
LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
if (LowerMoney.IndexOf(".") > 0)
{
if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
{
LowerMoney = LowerMoney + "0";
}
}
else
{
LowerMoney = LowerMoney + ".00";
}
strLower = LowerMoney;
iTemp = 1;
strUpper = "";
while (iTemp <= strLower.Length)
{
switch (strLower.Substring(strLower.Length - iTemp, 1))
{
case ".":
strUpart = "圓";
break;
case "0":
strUpart = "零";
break;
case "1":
strUpart = "壹";
break;
case "2":
strUpart = "貳";
break;
case "3":
strUpart = "叄";
break;
case "4":
strUpart = "肆";
break;
case "5":
strUpart = "伍";
break;
case "6":
strUpart = "陸";
break;
case "7":
strUpart = "柒";
break;
case "8":
strUpart = "捌";
break;
case "9":
strUpart = "玖";
break;
}

switch (iTemp)
{
case 1:
strUpart = strUpart + "分";
break;
case 2:
strUpart = strUpart + "角";
break;
case 3:
strUpart = strUpart + "";
break;
case 4:
strUpart = strUpart + "";
break;
case 5:
strUpart = strUpart + "拾";
break;
case 6:
strUpart = strUpart + "佰";
break;
case 7:
strUpart = strUpart + "仟";
break;
case 8:
strUpart = strUpart + "萬";
break;
case 9:
strUpart = strUpart + "拾";
break;
case 10:
strUpart = strUpart + "佰";
break;
case 11:
strUpart = strUpart + "仟";
break;
case 12:
strUpart = strUpart + "億";
break;
case 13:
strUpart = strUpart + "拾";
break;
case 14:
strUpart = strUpart + "佰";
break;
case 15:
strUpart = strUpart + "仟";
break;
case 16:
strUpart = strUpart + "萬";
break;
default:
strUpart = strUpart + "";
break;
}

strUpper = strUpart + strUpper;
iTemp = iTemp + 1;
}

strUpper = strUpper.Replace("零拾", "零");
strUpper = strUpper.Replace("零佰", "零");
strUpper = strUpper.Replace("零仟", "零");
strUpper = strUpper.Replace("零零零", "零");
strUpper = strUpper.Replace("零零", "零");
strUpper = strUpper.Replace("零角零分", "整");
strUpper = strUpper.Replace("零分", "整");
strUpper = strUpper.Replace("零角", "零");
strUpper = strUpper.Replace("零億零萬零圓", "億圓");
strUpper = strUpper.Replace("億零萬零圓", "億圓");
strUpper = strUpper.Replace("零億零萬", "億");
strUpper = strUpper.Replace("零萬零圓", "萬圓");
strUpper = strUpper.Replace("零億", "億");
strUpper = strUpper.Replace("零萬", "萬");
strUpper = strUpper.Replace("零圓", "圓");
strUpper = strUpper.Replace("零零", "零");

// 對壹圓以下的金額的處理
if (strUpper.Substring(0, 1) == "圓")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "零")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "角")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "分")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "整")
{
strUpper = "零圓整";
}
functionReturnValue = strUpper;

if (IsNegative == true)
{
return "負" + functionReturnValue;
}
else
{
return functionReturnValue;
}
}

#endregion 金額轉為大寫金額
}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如果說界面設計,那麼自適應問題一定無法避免,今天就來分享一下,wpf如何實現自適應,先看一下效果:(文末添加源代碼下載) 基本思路就是用 Grid 的網格,進行寬度的自動填充適應, 不過對於複雜的頁面,佈局起來可能比較麻煩, 這裡推薦結合 DockPanel 和 Grid 一起使用,對於頁面一些不需 ...
  • 第一步:上圖 第二步:上代碼 >>>>>>>>>>>源代碼下載<<<<<<<<< 第三步:說明 版本說明 v2.1 2017年9月28日19:37:39 qq1222698好多年不更新,應浩哥的要求,增加一些功能1、去掉自動回覆功能,加上自動發送功能2、增加回車功能、自動crc功能3、不再打包,自己 ...
  • 在繼承中,子類擁有父類的一切屬性和行為,而且任何父類出現的地方,都可以用子類來替代;可謂“長江後浪推前浪”啊 object是一切類的父類 泛型在編譯的時候確定類型(延遲思想); 泛型:用一個方法,來滿足不同類型的參數;泛型實際上是語法糖,由編譯器提供功能;沒有性能損失 泛型參數的個數可以隨便定義 貼 ...
  • 第一次寫隨筆,心裡有一些小激動。 第一次做金蝶二開,所以一臉懵逼,搜遍博客園和CSDN,都沒找到相關的帖子。 最後在金蝶研發部某大佬的幫助下,最終得逞所願!在此感謝這位大佬! 我的做法是在插件表單上添加一個進度條進行隱藏,添加進度條的目的是防止初始化載入後,防止線程被銷毀。 至於我的這個做法能不能入 ...
  • 參考:http://blog.csdn.net/songyefei/article/details/7397296 元數據交換 通過前兩篇的學習,我們瞭解了WCF通信的一些基本原理,我們知道,WCF服務端和客戶端通過共用元數據(包括服務協定、伺服器終結點信息)在兩個終結點上建立通道從而進行通信。我們 ...
  • 1、變數類型int、double、string、char、bool、decimal變數使用規則:先聲明,再賦值,最後使用 2、命名規範:Camel:第一個單詞首字母小寫,其他單詞首字母大寫,其餘字母小寫Pascal:每個單詞的首字母都大寫,其餘字母小寫 5、常量聲明常量的語法:const 變數類型 ...
  • 1、什麼是.net? .net有.net平臺和.Net Framework框架。 .net平臺是包含.net framework框架。 framework框架提供穩定的運行環境來保證基於.Net平臺開發的各種應用正常運轉。 2、什麼是C#? C#是一種編程語言,可以開發基於.net平臺的應用。 3、 ...
  • 在Global的 Application_BeginRequest方法中: Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN"); Thread.CurrentThread.CurrentUICulture = new Cult ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...