十进制数据相乘(大数据)
发布日期:2021-11-07 18:53:28 浏览次数:1 分类:技术文章

本文共 3501 字,大约阅读时间需要 11 分钟。

#ifdef UNICODEtypedef wstring _tstring;#elsetypedef string _tstring;#endif/***********************************************************************函数名称  :AddBigDataAux函数功能  :两个大数据进行相加(必须为正整数 )函数参数  : 参数列表格式 [_IN_ _OUT_ _OPTION_] 参数名 说明信息@param _tstring s _IN_ 第一个相加的结果@param _tstring r _IN_ 第二个相加的结果返回值    : @return _tstring  两个整数相加的结果------------------------------------------------------------------------备注      :输入的参数的要求:“必须是正整数”如果确保数据是正整数的话,请使用AddBigDataAux,这个函数运行的效率更高如果不能够保证输入参数是正整数的话,请使用AddBigData这个函数------------------------------------------------------------------------示例	  :************************************************************************/_tstring AddBigDataAux(_tstring s, _tstring r) {	int re = 0;	_tstring digit;	if (r.length() < s.length())		r.insert(r.begin(), s.length() - r.length(), '0');	else if (r.length() > s.length())		s.insert(s.begin(), r.length() - s.length(), '0');	for (int i = s.length() - 1; i >= 0; --i) {		int a = (int(s[i] + r[i]) + re - 96);		digit.insert(digit.begin(), char(a % 10 + 48));		re = a / 10;	}	if (re != 0)		digit.insert(digit.begin(), char(re + 48));	return digit;}/***********************************************************************函数名称  :MulBigDataAux函数功能  :两个大数据相乘(必须是正整数)函数参数  : 参数列表格式 [_IN_ _OUT_ _OPTION_] 参数名 说明信息			@param _tstring s _IN_ 第一个大数据相乘的数据			@param _tstring c _IN_ 第二个大数据相乘的数据返回值    : @return _tstring _IN_ 返回两个大数据相乘的结果------------------------------------------------------------------------备注      :	输入的参数的要求:“必须是正整数”如果确保数据是正整数的话,请使用MulBigDataAux,这个函数运行的效率更高如果不能够保证输入参数是正整数的话,请使用MulBigData这个函数------------------------------------------------------------------------示例	  :************************************************************************/_tstring MulBigDataAux(_tstring s, _tstring c) {	_tstring fina = L"";	for (int j = c.length() - 1; j >= 0; j--) {		_tstring digit = L"";		int re = 0;		for (int i = s.length() - 1; i >= 0; i--) {			int a = int(c[j] - '0')*int(s[i] - '0') + re;			digit.insert(digit.begin(), char(a % 10 + 48));			re = a / 10;		}		if (re != 0)digit.insert(digit.begin(), char(re + 48));		digit.append((c.length() - j - 1), '0');		fina = AddBigDataAux(fina, digit);	}	return fina;}/***********************************************************************函数名称  :MulBigData函数功能  :两个大数据相乘(可以是浮点型数据)函数参数  : 参数列表格式 [_IN_ _OUT_ _OPTION_] 参数名 说明信息			@param _tstring s _IN_ 第一个大数据相乘的数据			@param _tstring r _IN_ 第二个大数据相乘的数据返回值    : @return _tstring _IN_ 返回两个大数据相乘的结果------------------------------------------------------------------------备注      :	输入的参数的要求:“必须是正数”,但是可以是浮点型数据如果确保数据是正整数的话,请使用MulBigDataAux,这个函数运行的效率更高如果不能够保证输入参数是正整数的话,请使用MulBigData这个函数------------------------------------------------------------------------示例	  :************************************************************************/_tstring MulBigData(_tstring s, _tstring r){	size_t pos1 = s.find(L'.');	size_t pos2 = r.find(L'.');	size_t Len = 0;	if (pos1 != _tstring::npos)//如果没有找到的话	{		Len += (s.length() - pos1-1);		s.erase(pos1,1);	}	if (pos2 != _tstring::npos)	{		Len += (r.length() - pos2-1);		r.erase(pos2,1);	}	//去除前导的0	while (true)	{		if (s[0]==L'0')		{			s.erase(s.begin());		}		else		{			break;		}	}	while (true)	{		if (r[0]==L'0')		{			r.erase(r.begin());		}		else		{			break;		}	}	_tstring Int;//整数相乘的结果	Int = MulBigDataAux(s, r);	if (Int.length()>Len)	{		Int.insert(Int.length() - Len,1, L'.');	}	else	{		while (Int.length()<=Len)		{			Int.insert(Int.begin(), L'0');		}		Int.insert(Int.begin() + 1, L'.');	}	return Int;}

 

转载地址:https://blog.csdn.net/zhanggusheng/article/details/84581983 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:十进制数据相加(大数据)
下一篇:应用密码学-第十一章

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年03月18日 06时25分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

php 常用文件系统函数,php 文件系统函数整理介绍 2019-04-21
android pm.java,java – AM / PM的Android DateFormat因设备而异 2019-04-21
oracle存储过程调用sql文件,oracle - 在SQL Developer中运行存储过程? 2019-04-21
oracle同时报604和12507,V$SES_OPTIMIZER_ENV 查不到刚修改的隐含参数, 2019-04-21
zblog的php更换域名,zblogphp更换域名后,原zblog里使用了固定域名,登录不进去怎么办... 2019-04-21
oracle dnfs 配置,Source of Oracle参数解析(dnfs_batch_size) - django-\/\/ i K | 2019-04-21
oracle所需的环境,转:面对一个全新的oracle环境,首先应该了解什么? 2019-04-21
linux 小数四则运行,shell四则运算(整数及浮点数)的方法介绍 2019-04-21
linux系统分区后进入紧急模式,Linux系统的救援模式应用详解 2019-04-21
linux配置匿名ftp服务器,在Linux环境中使用vsftpd搭建ftp实现匿名上传详细配置 2019-04-21
linux创建硬盘分区lvm,LVM创建及分区调整、更换LVM硬盘 2019-04-21
FreeBSD可以安装Linux软件吗,在Linux服务器上面通过网络安装FreeBSD 2019-04-21
.net core linux 桌面应用,C# dotnet core + AvaloniaUI 开发桌面软件,hello world 2019-04-21
linux tcp 113错误,linux系统报tcp_mark_head_lost错误的处理方法 2019-04-21
南昌工程学院c语言答案,南昌工程学院C语言程序设计基础课件第3讲运算符和表达式... 2019-04-21
python学画画_python学画画(下) 2019-04-21
云栖社区 mysql_【直播结束,已更新回放】PG、MySQL到底哪个好?云栖说这次请来五位专家撕了一下-阿里云开发者社区... 2019-04-21
老男孩mysql 百度云_英语语录:除了你,没人能掌控你的幸福 2019-04-21
mysql驱动多次执行问题_Laravel5.2队列驱动expire参数设置带来的重复执行问题 数据库驱动... 2019-04-21
mysql获取刚新增的数据库_如何取得刚插入数据库的数据的id mysql 2019-04-21