用delphi写人民币大写转小写的函数

今天找到一个思路,用分段的方法实现了人民币大写转小写的功能,最大到千亿。细节待完善

function GetSegmentValue(RMB: string; const segmentChar: Char): Int64;
var
  I: Integer;
  allsum: Int64;
  CurrChar: Char;
  Temp: Int64;
  Digits: string;
begin
  Digits := '零壹贰叁肆伍陆柒捌玖';
  allsum := 0;
  Temp := 0;
  for I := 1 to Pos(segmentChar, RMB) do
  begin
    CurrChar := RMB[I];
    if Pos(CurrChar, Digits) > 0 then
    begin
      Temp := Pos(CurrChar, Digits) - 1;
    end;

    if Pos(CurrChar, '仟佰拾' + segmentChar) > 0 then
    begin
      if CurrChar = '仟' then
        Temp := Temp * 1000
      else if CurrChar = '佰' then
        Temp := Temp * 100
      else if CurrChar = '拾' then
        Temp := Temp * 10
      else if CurrChar = segmentChar then
        Temp := Temp * 1;

      allsum := allsum + Temp;
      Temp := 0;
    end;

  end;
  Result := allsum;

end;

function ConvertRMB(var RMB: string): Double;
var
  YiPos: Integer;
  Digits: string;
begin
  Result := 0;

  YiPos := Pos('亿', RMB);
  // 处理“亿”前面的部分
  if YiPos > 0 then
  begin
    Result := Result + GetSegmentValue(RMB, '亿') * 100000000;
    Delete(RMB, 1, YiPos);
  end;

  // 处理“万”前面的部分
  YiPos := Pos('万', RMB); // 重新定位
  if YiPos > 0 then
  begin
    Result := Result + GetSegmentValue(RMB, '万') * 10000;
    Delete(RMB, 1, YiPos);
  end;

  // 处理“元”前面的部分
  YiPos := Pos('元', RMB); // 重新定位
  if YiPos > 0 then
  begin
    Result := Result + GetSegmentValue(RMB, '元');
    Delete(RMB, 1, YiPos);
  end;

  YiPos := Pos('角', RMB); // 重新定位
  if YiPos > 0 then
  begin
    Result := Result + GetSegmentValue(RMB, '角') * 0.1;
    Delete(RMB, 1, YiPos);
  end;

  YiPos := Pos('分', RMB); // 重新定位
  if YiPos > 0 then
    Result := Result + GetSegmentValue(RMB, '分') * 0.01;

end;

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值