iOS---------金額轉大寫

来源:https://www.cnblogs.com/KiVen2015/archive/2019/09/05/11464943.html
-Advertisement-
Play Games

-(NSString *)digitUppercase:(NSString *)numstr{ double numberals=[numstr doubleValue]; NSArray *numberchar = @[@"零",@"壹",@"貳",@"叄",@"肆",@"伍",@"陸",@"柒" ...


-(NSString *)digitUppercase:(NSString *)numstr{
double numberals=[numstr doubleValue];
NSArray *numberchar = @[@"零",@"壹",@"貳",@"叄",@"肆",@"伍",@"陸",@"柒",@"捌",@"玖"];
NSArray *inunitchar = @[@"",@"拾",@"佰",@"仟"];
NSArray *unitname = @[@"",@"萬",@"億",@"萬億"];
//金額乘以100轉換成字元串(去除圓角分數值)
NSString *valstr=[NSString stringWithFormat:@"%.2f",numberals];
NSString *prefix;
NSString *suffix;
if (valstr.length<=2) {
prefix=@"零元";
if (valstr.length==0) {
suffix=@"零角零分";
}
else if (valstr.length==1)
{
suffix=[NSString stringWithFormat:@"%@分",[numberchar objectAtIndex:[valstr intValue]]];
}
else
{
NSString *head=[valstr substringToIndex:1];
NSString *foot=[valstr substringFromIndex:1];
suffix = [NSString stringWithFormat:@"%@角%@分",[numberchar objectAtIndex:[head intValue]],[numberchar objectAtIndex:[foot intValue]]];
}
}
else
{
prefix=@"";
suffix=@"";
NSInteger flag = valstr.length - 2;
NSString *head=[valstr substringToIndex:flag - 1];
NSString *foot=[valstr substringFromIndex:flag];
if (head.length>13) {
return@"數值太大(最大支持13位整數),無法處理";
}
//處理整數部分
NSMutableArray *ch=[[NSMutableArray alloc]init];
for (int i = 0; i < head.length; i++) {
NSString * str=[NSString stringWithFormat:@"%x",[head characterAtIndex:i]-'0'];
[ch addObject:str];
}
int zeronum=0;

for (int i=0; i<ch.count; i++) {
int index=(ch.count -i-1)%4;//取段內位置
NSInteger indexloc=(ch.count -i-1)/4;//取段位置
if ([[ch objectAtIndex:i]isEqualToString:@"0"]) {
zeronum++;
}
else
{
if (zeronum!=0) {
if (index!=3) {
prefix=[prefix stringByAppendingString:@"零"];
}
zeronum=0;
}
prefix=[prefix stringByAppendingString:[numberchar objectAtIndex:[[ch objectAtIndex:i]intValue]]];
prefix=[prefix stringByAppendingString:[inunitchar objectAtIndex:index]];
}
if (index ==0 && zeronum<4) {
prefix=[prefix stringByAppendingString:[unitname objectAtIndex:indexloc]];
}
}
prefix =[prefix stringByAppendingString:@"元"];
//處理小數位
if ([foot isEqualToString:@"00"]) {
suffix =[suffix stringByAppendingString:@"整"];
}
else if ([foot hasPrefix:@"0"])
{
NSString *footch=[NSString stringWithFormat:@"%x",[foot characterAtIndex:1]-'0'];
suffix=[NSString stringWithFormat:@"%@分",[numberchar objectAtIndex:[footch intValue] ]];
}
else
{
NSString *headch=[NSString stringWithFormat:@"%x",[foot characterAtIndex:0]-'0'];
NSString *footch=[NSString stringWithFormat:@"%x",[foot characterAtIndex:1]-'0'];
suffix=[NSString stringWithFormat:@"%@角%@分",[numberchar objectAtIndex:[headch intValue]],[numberchar objectAtIndex:[footch intValue]]];
}
}
return [prefix stringByAppendingString:suffix];
}


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

-Advertisement-
Play Games
更多相關文章
  • 數據傳輸和採集 Sqoop數據傳輸工具 實際項目開發中,往往很多業務數據是存放在關係型資料庫中,如 MySQL資料庫。我們需要將這些數據集中到數據倉庫中進行管理,便於使用計算模型進行統計、挖掘這類操作。 Sqoop是Apache軟體基金會的⼀一款頂級開源數據傳輸工具,用於在 Hadoop與關係型數據 ...
  • 一、整合說明 Storm 官方對 Kafka 的整合分為兩個版本,官方說明文檔分別如下: + "Storm Kafka Integration" : 主要是針對 0.8.x 版本的 Kafka 提供整合支持; + "Storm Kafka Integration (0.10.x+)" : 包含 Ka ...
  • 首先下載配置android studio ndk 1.打開sdkManager下載CMake和LLDB 2.配置ndk 項目新建 項目建立完畢後,工程目錄如下,cpp文件夾是系統自動生成的 3.自定義 navite方法 接下來開始寫自定義的一個native方法,新建一個Hello.java文件,裡面 ...
  • 記得很多年前的一次面試中,面試官問了這麼一個問題, 他的本意應該是考察 RxJava 的使用,只是我的答案是 ,他也就沒有再追問下去了。在早期 Android 開發的荒蕪時代,Handler 的確承擔了項目中大部分的線程切換工作,通常包括子線程更新 UI 和消息傳遞。不光在我們自己的應用中,在整個 ...
  • Android Studio NDK 開發 記錄在Android Studio中NDK簡單開發的步驟 用到的Android Studio版本為3.5。 配置NDK 下載NDK 一般在SDK下已經有自帶的ndk文件夾,如sdk目錄下的ndk bundle文件夾。 如果沒有,可以在SDK Manager ...
  • Android Gradle 多渠道構建 多渠道構建的基本原理 在Android Gradle中,定義了一個叫Build Variant的概念,一個Build Variant=Build TYpe+Product Flavor,Build Type就是我們構建的類型,比如release和debug; ...
  • 在實際開發中,為了防止用戶誤觸返回按鈕導致程式退出,通常會設置為在1秒內連續點擊兩次才會退出應用程式。Android中一般的處理方式是在onKeyDown方法內做計時處理,當keyCode == KeyEvent.KEYCODE_BACK 且 兩次點擊返回按鈕間隔時間小於1秒則退出應用程式,在Flu... ...
  • 什麼是JDK? JDK 即 Java Development Kit,Java開發工具包,用來編譯 Java 程式。JRE 在接觸JDK的過程中,同時瞭解到 JRE,JRE 即 Java Runtime Environment ,Java的運行環境。JDK中會包含JRE。 如何下載JDK? 搜索jd ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...