十进制数据相乘(大数据)
发布日期: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
oracle所需的环境,转:面对一个全新的oracle环境,首先应该了解什么?
2019-04-21
linux 小数四则运行,shell四则运算(整数及浮点数)的方法介绍
2019-04-21
linux系统分区后进入紧急模式,Linux系统的救援模式应用详解
2019-04-21
linux创建硬盘分区lvm,LVM创建及分区调整、更换LVM硬盘
2019-04-21
FreeBSD可以安装Linux软件吗,在Linux服务器上面通过网络安装FreeBSD
2019-04-21
南昌工程学院c语言答案,南昌工程学院C语言程序设计基础课件第3讲运算符和表达式...
2019-04-21
python学画画_python学画画(下)
2019-04-21
老男孩mysql 百度云_英语语录:除了你,没人能掌控你的幸福
2019-04-21
mysql获取刚新增的数据库_如何取得刚插入数据库的数据的id mysql
2019-04-21