C++: 编写函数,将参数传入的一个浮点数值转换为中文金额的大写格式,转换结果作为字符串返回。

本文介绍了一个C++函数,该函数可以将输入的浮点数转换为中文金额的大写格式。转换过程中考虑了整数和小数部分的处理,连续零的简化表示,以及特殊数字如10的正确表述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++:将参数传入的一个浮点数值转换为中文金额的大写格式,转换结果作为字符串返回

编写函数,将参数传入的一个浮点数值转换为中文金额的大写格式,转换结果作为
字符串返回。
●当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字。
●当金额中含有连续的0时,只需要一个"零"即可。
●注意10的表示,例如110: 壹佰壹拾元整,10: 壹拾元整。

#include<iostream>
#include<string>
#include <cstdlib>
#include <sstream>
using namespace std;

string trans(double);


int main()
{
    double num;
    cout<<"请输入一个需要转换为中文金额的浮点数(精确到小数点后两位):";
    cin>>num;
    string str=trans(num);
    cout<<num<<"转换为中文金额为:"<<str;
}

string trans(double num)
{

    string unit[] = {"分","角","元","拾","佰","仟","万"};//单位
    string counts[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    string news;
    num=num*100.0;
    int a = num;//将数字转化为字符串
    stringstream ss;
    ss << a;
    string str = ss.str();
    size_t len=str.size();
    for(size_t i=0;i<len;i++)
    {
        if(str[i] - '0'==0)//出现多个零时只保留一个零
        {
            if(str[i-1]- '0'==0)
                continue;
            else
                news = news + counts[str[i] - '0'] ;
        }
        else
            news = news + counts[str[i] - '0'] + unit[len - i - 1];//不出现零时正常表示
    }

    string::size_type position1,position2;
    position1=news.find("角");
    position2=news.find("分");
    if(position1==news.npos&&position2==news.npos)//角和分同时不存在时表示为整
    {
        news.append("整");
    }
    if(news.find("零整")!=-1)
        news.replace(news.find("零整"),3,"整");//排除零整出现在一起的情况
    return news;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值