如何用Matlab将人民币小写数字转换为大写

【转换函数原型】为:function[MoneyCText,OK,Msg]=MoneyValueToCText(MoneyValue)MoneyValue–输入参数,阿拉... 【转换函数原型】为:
function [MoneyCText, OK, Msg] = MoneyValueToCText(MoneyValue)
MoneyValue – 输入参数,阿拉伯数字表示的金额,为一个字符串(注意这一点);
MoneyCText – 输出参数,转换后的大写金额字符串;
OK – 输出参数,转换正确返回true,否则返回false(如输入数字范围不对,格式不对等);
Msg – 输出参数,返回信息,如果转换正确值为空,否则为对应的错误信息,如“输入格式不正确!”(这个错误信息具体值可以自行设计);
(2)函数实现时必须实现如下功能,并在测试脚本中反映出来:
(2-1)输入数字以“元”为单位,精确到“分”(即输入数字为小数点后两位),最小值为1分,最大值为1亿元;据此进行范围检查,否则输出错误信息“输入金额不在合法范围!”;
(2-2)输入数字要进行格式检查,即输入的字符串种只能包含数字和逗点分隔符“.”,否则是非法的,如“123$%.34”就是一个非法输入金额值;
(2-3)转换后的字符串末尾为“整”,比如“123.56”转换为“壹佰贰拾叁元伍角陆分整”。
展开
 我来答
百度网友96ffcf7
2015-08-04 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118724
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部

具体方法是:

设置一个单位映射字符串表g_strUnit,可视为一个简单的HashTable。然后从头开始读取整数字符串的每个字符,若这个字符在整数字符串的位置为i,这个字符后面的单位就是g_strUnit[length-1-i]。

ASCII 转 整数 
char(real(A)-32) 小写转大写 
char(real(A)+32) 大写转小写
ruifengcao
2011-06-25 · TA获得超过9491个赞
知道大有可为答主
回答量:3579
采纳率:33%
帮助的人:2081万
展开全部
clear;clc;
a1='壹贰叁肆伍陆柒捌玖';
a2={ '元' '拾' '佰' '仟' '万' '拾万' '佰万' '仟万' '亿'};
a3={'角' '分'};
s=200002.20;
ss=num2str(s*100);
N=length(ss);
s1=ss(1:N-2);
s2=ss(N-1:N);
x1=[];
x2=[];
for i=1:N-2
if ss(i)~='0'
x1=[x1 a1(str2num(s1(i))) a2{N-2+1-i}]
elseif x1(length(x1))~='零'
x1=[x1 '零']
end
end
if x1(length(x1))=='零'
x1=[x1(1:length(x1)-1) '元']
end

if s2(1)~='0' && s2(2)~='0'
x2=[a1(str2num(s2(1))) '角' a1(str2num(s2(2))) '分整']
elseif s2(1)=='0' && s2(2)~='0'
x2=['零' a1(str2num(s2(2))) '分整']
elseif s2(1)~='0' && s2(2)=='0'
x2=[a1(str2num(s2(1))) '角整']
else
x2='整'
end

x=[x1 x2]

这个是程序的主体部分,其他的你可以自己加上了!
更多追问追答
追问
其他的怎么加啊?各式不是按我给你的来的啊?
s1=ss(1:N-2);
s2=ss(N-1:N);
这两句什么意思?这里面怎么没有disp语句啊?
x1=[x1 a1(str2num(s1(i))) a2{N-2+1-i}]
这一句就是显示的吗?
追答
这就是主体部分了,非法输入的判断啊什么的都很简单的,自己写一下吧。s1和s2就是把整数部分和小数部分分开,以便编程!最后的x就是disp的意思
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式