阿拉伯数字转换为中文数字

本文介绍了如何将阿拉伯数字转换为中文数字的算法。在处理数字时,首先处理小数部分,然后从左到右四位一组进行转换。考虑了0的处理,包括全0、中间0和单独的'0'。对于特殊情况如'10',进行了特殊处理。通过这样的方法,实现了完整的数字转换过程。
摘要由CSDN通过智能技术生成

有次在百度的面试中遇到了这个问题,当时做的比较挫,现在仔细想了一下然后写了这样的一段代码。我是按照人对数字的分析来写的这段代码。

首先,如果在数字中有小数部分,那么直接从末尾开始将小数部分的每一位转换为中文,即代码20-28行所示,最后需要增加一个“点”字。然后,从小数点左边的低位到高位四位四位地进行转换,如代码34-51行所示。flag是0位数的计数,如果当前四位全是0那么不需要每四位的单位,如”萬”,”億”,”兆”等,见52-53行。如果当前四位右边紧接着的几个位是零,那么视需要添加一个零,例如10001写作壹萬零壹,见代码37-38行。如果当前四个位中有一个或连续几个零,需要添加一个零,见39-40行,例如1001写作壹仟零壹。47-48行的代码是处理但个“0”的情况。还有一种情况比较特殊,就是有10这种情况,并不是写作“数+位”的形式,这种情况只考虑这个“拾”在最高位的情况,见代码43-45行。最后,每个四位组合在一起,转换就完成了!

#include <iostream>
#include <stack>
#include <string>
using namespace std;

string convert(string str)
{
	const cha
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值