大写金额换算器iOS版源码
大写金额换算器iOS版源码
人民币金额大写转换器输入数字就可以转换成相应的人民币大写金额,操作很easy,需一键点击,就可以复制。
是財务办公人员必备的小工具。
银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要根据,直接关系到支付结算的准确、及时和安全。票据和结算凭证是银行、单位和个人凭以记载账务的会计凭证。是记载经济业务和明白经济责任的一种书面证明。因此,填写票据和结算凭证必须做到标准化、规范化、要素齐全、数字正确、字迹清晰、不错漏、不潦草、防止涂改。
中文大写金额数字应用正楷或行书填写,如壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样,不得用一、二(两)、三、四、五、六、七、八、九、十、毛、另(或0)填写。不得自造简化字。假设金额数字书写中使用繁体字,如贰、陆、亿、万、圆的,也应受理。
下面是实现的主要代码:完整project代码见http://www.mingjianhua.com/post/%E5%A4%A7%E5%86%99%E9%87%91%E9%A2%9D%E6%8D%A2%E7%AE%97%E5%99%A8iOS%E7%89%88%E6%BA%90%E4%BB%A3%E7%A0%81.html
本软件已在Appstore上架,可下载预览。


//
// ViewController.m
// numbers
//
// Created by MingJianhua on 14/10/14.
// Copyright (c) 2014年 MingJianhua. All rights reserved.
//
#import "ViewController.h"
#include <stdio.h>
#include <stdlib.h>
#import "config.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize txtNumber, txtViewChinese;
@synthesize btn_0,btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9;
@synthesize btn_Dot, btn_Back, btn_Clear, btn_Copy;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
txtNumber.delegate = self;
//txtChinese.adjustsFontSizeToFitWidth = YES;
[self SetButtonBorder];
txtNumber.layer.borderWidth = 1.0;
txtNumber.layer.cornerRadius = 5;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef colorref = CGColorCreate(colorSpace,(CGFloat[]){ 0, 0, 0, 0.5 });
[txtNumber.layer setBorderColor:colorref];//边框颜色
txtViewChinese.layer.borderWidth = 1.0;
txtViewChinese.layer.cornerRadius = 5;
//CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
//CGColorRef colorref = CGColorCreate(colorSpace,(CGFloat[]){ 0, 0, 0, 0.5 });
[txtViewChinese.layer setBorderColor:colorref];//边框颜色
strArray1 = [NSArray arrayWithObjects:@"", @"拾", @"佰", @"仟", nil];
strArray2 = [NSArray arrayWithObjects:@"", @"萬", @"亿", nil];
strArray3 = [NSArray arrayWithObjects:@"角", @"分", nil];
strArray4 = [NSArray arrayWithObjects:@"零", @"壹", @"贰", @"叁", @"肆", @"伍", @"陆", @"柒", @"捌", @"玖", nil];
adView = [[AdMoGoView alloc]
initWithAppKey:@"8f9f18594cb841c6aac520c862ee4d8b"
adType:AdViewTypeNormalBanner
adMoGoViewDelegate:self];
adView.adWebBrowswerDelegate = self;
adView.frame = CGRectMake(0, _MainScreen_Height - 50 +
(IOS7_OR_LATER?
20:0), _MainScreen_Width, 50);
[self.view addSubview:adView];
}
- (void)viewWillAppear:(BOOL)animated
{
int nCount = 0;
NSNumber *nUsedCount = [[NSUserDefaults standardUserDefaults] objectForKey:@"UsedCount"];
if (nUsedCount != nil)
{
nCount = [nUsedCount intValue];
}
if (nCount==3 )
{
altPingfen = [[UIAlertView alloc] initWithTitle:@"提示" message:@"这是您第3次用打开了本应用了,假设认为好用,就去打个分鼓舞下吧。" delegate:self cancelButtonTitle:@"残忍拒绝" otherButtonTitles:@"去给好评", nil];
[altPingfen show];
nCount ++;
nUsedCount = [NSNumber numberWithInt:nCount];
}
else if(nCount<3)
{
nCount ++;
nUsedCount = [NSNumber numberWithInt:nCount];
}
[[NSUserDefaults standardUserDefaults] setObject:nUsedCount forKey:@"UsedCount"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction) NumberPress:(id)sender
{
UIButton *btnNumber = (UIButton *)sender;
int number = (int)btnNumber.tag - 100;
if (m_nCurrentNumber>=100000000000 && btndotpress == NO)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"输入数据太大了" delegate:self cancelButtonTitle:nil otherButtonTitles:@"知道了", nil];
[alertView show];
return;
}
if(btndotpress==NO)
//推断是否按下了小数点。
{
m_nCurrentNumber = m_nCurrentNumber * 10 +
number;
}
else {
if (ii>=2)
{
return;
}
++ii;
m_nCurrentNumber = m_nCurrentNumber +
number * pow(0.1,ii); //i为点击小数点后再每输入一个数都退一个百分位。
}
if (btndotpress == NO)
txtNumber.text =
[NSString stringWithFormat:@"%lld",
(long long)m_nCurrentNumber];
else
txtNumber.text =
[NSString stringWithFormat:@"%.2f", m_nCurrentNumber];
//txtChinese.text = txtNumber.text;
//整数部分
NSString *sChinese;
sChinese = [self ConvertIntergerPart:m_nCurrentNumber];
sChinese = [sChinese stringByAppendingString: [self ConvertFractionalPart:m_nCurrentNumber]];
txtViewChinese.text =
sChinese;
//小数部分
//[NSArray with:@"元",@"拾",@"佰",nil];
//while (nIntNumber>10) {
// nIntNumber%10
//}
}
- (NSString *)ConvertIntergerPart:(double)
currentNumber
{
long long nIntNumber
= (long long)currentNumber;
NSString *sIntNumber = @"";
if (nIntNumber>0)
{
int nPos = 0;
int nIndex1 = 0,
nIndex2 = 0;
int nLastNumber = 0;
while(nIntNumber>0)
{
int nNumber = nIntNumber%10;
NSString *sNumber = [strArray4 objectAtIndex:nNumber];
if (nIndex2 >= 0 &&
nIndex1 == 0) {
sIntNumber = [[strArray2 objectAtIndex:nIndex2] stringByAppendingString:sIntNumber];
}
if (nNumber >0)
{
sIntNumber = [[strArray1 objectAtIndex:nIndex1] stringByAppendingString:sIntNumber];//[strArray4
objectAtIndex:nNumber]];
}
if (!(nNumber == 0 &&
(nIndex1==0 || nLastNumber==0 )))
{
sIntNumber = [sNumber stringByAppendingString:sIntNumber];//[strArray4
objectAtIndex:nNumber]];
}
nIntNumber = nIntNumber/10;
nLastNumber = nNumber;
nPos++;
nIndex1 = nPos%4;
nIndex2 = (nPos/4)%3;
if (nPos>8 &&
nIndex2==0) {
nIndex2++;
}
}
sIntNumber = [sIntNumber stringByAppendingString:@"元"];
}
return sIntNumber;
}
- (NSString *)ConvertFractionalPart:(double)
currentNumber
{
NSString *sFloatNumber = @"";
long long nIntNumber
= (long long)currentNumber;
float fFloatNumber = currentNumber - nIntNumber +0.001;
int nJiao = (int)(fFloatNumber*10);
int nFen = (int)(fFloatNumber*100)%10;
if (nJiao == 0 &&
nFen == 0) {
sFloatNumber = @"整";
}
else if (nJiao
== 0)
{
sFloatNumber = [sFloatNumber stringByAppendingString:@"零"];
sFloatNumber = [sFloatNumber stringByAppendingString:[strArray4 objectAtIndex:nFen]];
sFloatNumber = [sFloatNumber stringByAppendingString:@"分"];
}
else
{
sFloatNumber = [sFloatNumber stringByAppendingString:[strArray4 objectAtIndex:nJiao]];
sFloatNumber = [sFloatNumber stringByAppendingString:@"角"];
sFloatNumber = [sFloatNumber stringByAppendingString:[strArray4 objectAtIndex:nFen]];
sFloatNumber = [sFloatNumber stringByAppendingString:@"分"];
}
return sFloatNumber;
}
-(IBAction) DotPress:(id)sender
{
btndotpress = YES;
}
-(IBAction) BackPress:(id)sender
{
if(btndotpress == NO)
{
m_nCurrentNumber = (long long)m_nCurrentNumber/10;
}
else
{
if (ii == 0)
{
m_nCurrentNumber = m_nCurrentNumber/10;
btndotpress = NO;
}
else if(ii == 1)
{
m_nCurrentNumber = (long long)m_nCurrentNumber;
btndotpress = NO;
ii--;
}
else if(ii == 2)
{
long long nIntNumber
= (long long)m_nCurrentNumber;
double fFloatNumber = m_nCurrentNumber -
nIntNumber +0.001;
int nJiao = (int)(fFloatNumber*10);
m_nCurrentNumber = (double)nIntNumber
+ (double)nJiao/10;
ii--;
}
}
if (btndotpress == NO)
txtNumber.text =
[NSString stringWithFormat:@"%lld",
(long long)m_nCurrentNumber];
else
txtNumber.text =
[NSString stringWithFormat:@"%.2f", m_nCurrentNumber];
NSString *sChinese;
sChinese = [self ConvertIntergerPart:m_nCurrentNumber];
sChinese = [sChinese stringByAppendingString: [self ConvertFractionalPart:m_nCurrentNumber]];
txtViewChinese.text =
sChinese;
}
-(IBAction) ClearPress:(id)sender
{
m_nCurrentNumber = 0;
txtNumber.text = @"0";
btndotpress = NO;
//txtChinese.text = @"";
txtViewChinese.text = @"";
ii = 0;
}
-(IBAction) CopyPress:(id)sender
{
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = txtViewChinese.text;
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"大写数字已拷贝到剪贴板" delegate:self cancelButtonTitle:nil otherButtonTitles:@"知道了", nil];
[alertView show];
}
-(void) SetButtonBorder
{
//int nWidth = _MainScreen_Width/3;
for (int i
= 0; i<=13; i++) {
int tag = 100 +i;
UIButton * btn = (UIButton *)[self.view viewWithTag:tag];
[btn.layer setMasksToBounds:YES];
[btn.layer setCornerRadius:0.0]; //设置矩圆角半径
[btn.layer setBorderWidth:0.5]; //边框宽度
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef colorref = CGColorCreate(colorSpace,(CGFloat[]){ 0, 0, 0, 0.5 });
[btn.layer setBorderColor:colorref];//边框颜色
}
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
[textField resignFirstResponder];
textField.text = @"";
return NO;
}
- (void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event
{
//[txtChinese resignFirstResponder];
[txtNumber resignFirstResponder];
}
- (void)alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView == altPingfen)
{
if (buttonIndex == 0)
{
}
else if (buttonIndex
== 1)
{
// 打分
NSString *str = [NSString stringWithFormat:
@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=%d",
932475713 ];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}
else
{
}
altPingfen = nil;
}
}
/** * 广告開始请求回调 */
- (void)adMoGoDidStartAd:(AdMoGoView *)adMoGoView{ NSLog(@"广告開始请求回调");
}
/**
* 广告接收成功回调
*/
- (void)adMoGoDidReceiveAd:(AdMoGoView *)adMoGoView{ NSLog(@"广告接收成功回调");
}
/**
* 广告接收失败回调
*/
- (void)adMoGoDidFailToReceiveAd:(AdMoGoView *)adMoGoViewdidFailWithError:(NSError *)error{ NSLog(@"广告接收失败回调");
}
/**
* 点击广告回调
*/
- (void)adMoGoClickAd:(AdMoGoView *)adMoGoView{ NSLog(@"点击广告回调");
}
/** *自己定义尺寸是否须要轮换 */
- (BOOL)adMoGoCustomSizeAdRotateOrNot{
return NO;//[YES/NO 是否须要轮换];
}
/**
*自己定义广告尺寸
*/
- (CGSize)adMoGoCustomSize{
CGSize size;
size.width = _MainScreen_Width;
size.height = 50;
return size;
}
/**
*You can get notified when the user delete the ad 广告关闭回调
*/
- (void)adMoGoDeleteAd:(AdMoGoView *)adMoGoView{ NSLog(@"广告关闭回调");}
- (UIViewController *)viewControllerForPresentingModalView{
return self;
}
@end
大写金额换算器iOS版源码的更多相关文章
- ios源码-ios游戏源码-ios源码下载
游戏源码 一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...
- 完美高仿精仿京东商城手机客户端android版源码
完美高仿精仿京东商城手机客户端android版源码,是从安卓教程网那边转载过来的,这款应用源码非常不错的,也是一个非常优秀的应用源码的,希望能够帮到学习的朋友. _js_op> <igno ...
- [源码]一键获取windows系统登陆密码vc6版源码
[源码]一键获取windows系统登陆密码vc6版源码支持:XP/2000/2003/WIN7/2008等 此版本编译出来的程序体积较小几十KB... 而vs版则1点几M,体积整整大了2-30倍对某些 ...
- 锋利的jQuery(第二版)源码下载地址
书上给的http://cssrain.sinaapp.com无法访问 问作者邮箱要的: 第1版源码:百度云盘下载:http://pan.baidu.com/share/link?shareid=104 ...
- Maven编译并打包Mahout CDH版源码
目录 1. 问题描述 最近在使用Mahout里的推荐算法进行实验,由于业务需求,需要修改Mahout源码,将原本输出到HDFS上的结果输出到HBase中.由于Mahout发布的源码都是Maven项目, ...
- atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结
atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结 1. 为什么虚拟机语言容易被反编译 1 2. 源码泄露的问题问题 1 3. Excelsior JET 1 4. gcj.的流 ...
- ue4.3正式版源码链接
ue4.3正式版源码链接 http://tieba.baidu.com/p/3170253742
- 运行OpenGL红宝书第9版源码时Visual Studio提示“无法启动程序...ALL_BUILD。拒绝访问“的问题的解决办法
问题描述: OpenGL红宝书第9版源码采用CMake编译后,用相应的Visual Studio(如VS2012)打开“vermilion9.sln”解决方案,并运行时Visual Studio提示“ ...
- 微信聊天记录查看器(程序+源码) - iOS版
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4338643.html Updates [2016.10.14]感谢 ...
随机推荐
- linux nohup & 简单使用
线上通常nohup配合&启动程序,同时免疫SIGINT和SIGHUP信号,从而保证程序在后台稳定运行 & 1.后台运行,输出默认到屏幕 2.免疫SIGINT信号,比如Ctrl+c不会杀 ...
- 部署bugzilla(bugzilla+apache+mysql+linux)
工作原因,需要部署bugzilla.在此,容我新造个轮子.官方轮子:https://bugzilla.readthedocs.org/en/latest/installing/quick-start. ...
- RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...
- vue项目国际化实现 vue-i18n使用详细教程
1.安装vue-i18n: npm i vue-i18n -S 当然你也可以这样: <script src="https://unpkg.com/vue/dist/vue.js&quo ...
- 413 Request Entity Too Large报错处理
修改nginx配置 这是最简单的一个做法,着报错原因是nginx不允许上传配置过大的文件,那么件把nginx的上传大小配置调高就好. 1.打开nginx主配置文件nginx.conf,一般在 ...
- 服务器 获取用户 真实ip
在有代理的情况下,因为要代替客户端去访问服务器,所以,当请求包经过反向代理后,在代理服务器这里这个IP数据包的IP包头做了修改,最终后端WEB服务器得到的数据包的头部源IP地址是代理服务器的IP地址. ...
- 关闭的语句: next、关闭的 Resultset: next、关闭的连接: next问题
如果在rs.next()之前关闭了Statement或PreparedStatement,会导致下面的异常: java.sql.SQLException: 关闭的语句: next 如果在rs.next ...
- Rsync远程同步工具使用
rsync远程同步工具使用 Rsync(remote synchronize) 是一个远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件.Rsync的好处是只 ...
- 原生js实现三个按钮绑定三个计时器,点击其中一个按钮,开启当前计时器,另外另个不开启
今天在某个前端交流群,有个小伙伴问了一个小功能,自己想了一下,代码如下,可以实现基本功能: 下面是html结构 <div id="demo"> <input ty ...
- [bzoj2431][HAOI2009][逆序对数列] (dp计数)
Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的 数列,可以很容易求出有多少个逆序对数.那么逆 ...