function MoneyMask(mMoney: Real; mSpace: string = ''): string; overload;
const
cMoneyChar: WideString = '零壹贰叁肆伍陆柒捌玖';
var
I: Integer;
begin
Result := FormatFloat('00000.00', mMoney);
for I := 0 to 9 do
Result :=
StringReplace(Result, IntToStr(I), cMoneyChar[I + 1] + mSpace, [rfReplaceAll]);
Result := StringReplace(Result, '.', '', [rfReplaceAll]);
end;
function MoneyMask(mMoney: string; mSpace: string = ''): string; overload;
begin
mMoney := StringReplace(mMoney, ',', '', [rfReplaceAll]);
Result := MoneyMask(StrToFloatDef(mMoney, 0), mSpace);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := MoneyMask('1606.53', ' ');
end;
begin
qianwei := -2 ;//小数点后的位置,这里为2位
neg := False;
SmallMoney := FormatFloat('0.00',value);
number := Length(SmallMoney);
if copy(trim(SmallMoney),1,1) ='-' then
begin
neg := True;
number := number -1;
SmallMoney := Copy(SmallMoney,2,number);
end;
dianweizhi := pos('.',SmallMoney);
for qian:= Length(SmallMoney) downto 1 do //循环小写金额的每一位,从右到左
begin
if qian<>dianweizhi then //如果读到的不是小数点就继续
begin
case StrToInt(Copy(SmallMoney,qian,1)) of
1:wei1 := '壹';
2:wei1 := '贰';
3:wei1 := '叁';
4:wei1 := '肆';
5:wei1 := '伍';
6:wei1 := '陆';
7:wei1 := '柒';
8:wei1 := '捌';
9:wei1 := '玖';
0:wei1 := '零';
end;
case qianwei of //判断大写位置
-3:qianwei1 :='厘';
-2:qianwei1 :='分';
-1:qianwei1 :='角';
0:qianwei1 :='元';
1,5,9:qianwei1 :='拾';
2,6,10:qianwei1 :='佰';
3,7,11:qianwei1 :='千';
4:qianwei1 :='万';
8:qianwei1 :='亿';
end;
inc (qianwei);
BigMoney := wei1+qianwei1+BigMoney; //组合成大写金额
end;
end;
if neg then Result := '负'+BigMoney
else Result := BigMoney;
end;
直接调用即可