人民币大小写转换function

create or replace function F_upper_money(p_num in number default null)
return nvarchar2 is

Result nvarchar2(100);
num_round nvarchar2(100) :=to_char(abs(round(p_num,2)));
num_left nvarchar2(100);
num_right nvarchar2(2);
str1 nchar(10) :='零壹贰叁肆伍陆柒捌玖';
str2 nchar(16) :='元拾佰仟万拾佰仟亿拾佰仟万拾佰仟';
num_pre number(1):=1;
num_current number(1);
num_count number:=0;

begin
if p_num is null then return null;end if;

select to_char(
nvl(substr(to_char(num_round),1,
decode(instr(to_char(num_round),'.'),0,
length(num_round),instr(to_char(num_round),'.')-1)),
0)) into num_left from dual;
select substr(to_char(num_round),
decode(instr(to_char(num_round),'.'),0,
length(num_round)+1,instr(to_char(num_round),'.')+1),2)
into num_right from dual;

if length(num_left)>16 then return '**********'; end if;

if length(num_right)=2 then
if to_number(substr(num_right,1,1))=0 then
result:='零'||substr(str1,to_number(substr(num_right,2,1))+1,1)||'分';
else
result:=substr(str1,to_number(substr(num_right,1,1))+1,1)||'角'||
substr(str1,to_number(substr(num_right,2,1))+1,1)||'分';
end if;
elsif length(num_right)=1 then
result:=substr(str1,to_number(substr(num_right,1,1))+1,1)||'角整';
else
result :='整';
end if;

for i in reverse 1..length(num_left) loop
num_count:=num_count+1;
num_current:=to_number(substr(num_left,i,1));
if num_current>0 then
result:=substr(str1,num_current+1,1)||substr(str2,num_count,1)||result;
else
if mod(num_count-1,4)=0 then
result:=substr(str2,num_count,1)||result;
num_pre:=0;
end if;
if num_pre>0 or length(num_left)=1 then
result:=substr(str1,num_current+1,1)||result;
end if;
end if;
num_pre:=num_current;
end loop;

if p_num<0 then
result:='负'||result;
end if;

return Result;

exception
when others then
raise_application_error(-20001,'数字转换大写出现错误!'||sqlerrm);
end ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的人民币大小写转换页面的示例代码: ```html <!DOCTYPE html> <html> <head> <title>人民币大小写转换</title> <meta charset="utf-8"> <style> input[type="number"] { width: 150px; padding: 10px; font-size: 16px; } input[type="submit"] { padding: 10px 20px; font-size: 16px; background-color: #4CAF50; color: white; border: none; cursor: pointer; } </style> </head> <body> <h1>人民币大小写转换</h1> <form> <label for="amount">请输入金额:</label> <input type="number" id="amount" name="amount" placeholder="请输入金额" required><br><br> <input type="submit" value="转换"> </form> <p id="result"></p> <script> function convertToChinese(num) { var strOutput = ""; var strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'; num += "00"; var intPos = num.indexOf('.'); if (intPos >= 0) num = num.substring(0, intPos) + num.substr(intPos + 1, 2); strUnit = strUnit.substr(strUnit.length - num.length); for (var i = 0; i < num.length; i++) strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i, 1), 1) + strUnit.substr(i, 1); return strOutput.replace(/零角零分$/, '').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+$/, ''); } var form = document.querySelector('form'); var result = document.querySelector('#result'); form.addEventListener('submit', function(event) { event.preventDefault(); var amount = document.querySelector('#amount').value; result.textContent = convertToChinese(amount); }); </script> </body> </html> ``` 这个页面使用了 HTML、CSS 和 JavaScript 技术。用户可以在输入框中输入金额,然后单击“转换”按钮将其转换为中文大写形式并显示在页面上。转换函数使用了一些字符串操作和替换方法来生成中文大写字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值