当前位置: 首页 > wzjs >正文

江门市住房和城乡建设局网站站长工具天美传媒

江门市住房和城乡建设局网站,站长工具天美传媒,网站建设网站备案所需资料,wordpress素材程序目录 高精度加法 代码说明: 高精度加法(整数) 高精度加法(浮点数) 高精度加法(含符号) 高精度减法 代码说明: 高精度减法(整数) 高精度减法&…

目录

高精度加法

代码说明:

高精度加法(整数)

高精度加法(浮点数)

 高精度加法(含符号)       

高精度减法

代码说明:

高精度减法(整数)

 高精度减法(浮点数)

高精度乘法

代码说明:

高精度乘法(整数)

 高精度乘法(浮点数)

 高精度除法

高精度除法(整数)

 高精度除法(浮点数)

代码说明:


高精度加法

代码说明:

  1. 高精度加法(整数)

    • 首先确保两个字符串长度相等,较短的字符串在前面补零。

    • 从最低位开始逐位相加,并处理进位。

    • 最后反转结果字符串得到正确的顺序。

  2. 高精度加法(浮点数)

    • 将浮点数分为整数部分和小数部分。

    • 分别对整数部分和小数部分进行高精度加法。

    • 处理小数部分相加后可能产生的进位。

    • 最后合并整数部分和小数部分得到最终结果。

高精度加法(整数)

// 高精度加法(整数)
string addBigInt(string num1, string num2) {// 确保num1是较长的字符串if (num1.length() < num2.length()) {swap(num1, num2);}// 补零使两个字符串长度相等while (num2.length() < num1.length()) {num2 = '0' + num2;}string result;int carry = 0;for (int i = num1.length() - 1; i >= 0; --i) {int digit1 = num1[i] - '0';int digit2 = num2[i] - '0';int sum = digit1 + digit2 + carry;carry = sum / 10;result.push_back((sum % 10) + '0');}// 如果最后还有进位if (carry) {result.push_back(carry + '0');}// 反转结果字符串reverse(result.begin(), result.end());return result;
}

高精度加法(浮点数)

// 高精度加法(浮点数)
string addBigFloat(string num1, string num2) {// 分离整数部分和小数部分size_t dot1 = num1.find('.');size_t dot2 = num2.find('.');string intPart1 = (dot1 == string::npos) ? num1 : num1.substr(0, dot1);string fracPart1 = (dot1 == string::npos) ? "" : num1.substr(dot1 + 1);string intPart2 = (dot2 == string::npos) ? num2 : num2.substr(0, dot2);string fracPart2 = (dot2 == string::npos) ? "" : num2.substr(dot2 + 1);// 补零使小数部分长度相等while (fracPart1.length() < fracPart2.length()) {fracPart1.push_back('0');}while (fracPart2.length() < fracPart1.length()) {fracPart2.push_back('0');}// 小数部分相加string fracSum = addBigInt(fracPart1, fracPart2);int carry = 0;if (fracSum.length() > fracPart1.length()) {carry = 1;fracSum = fracSum.substr(1);}// 整数部分相加string intSum = addBigInt(intPart1, intPart2);if (carry) {intSum = addBigInt(intSum, "1");}// 合并整数部分和小数部分return intSum + "." + fracSum;
}

 高精度加法(含符号)       

负号使用高精度减法, 正好使用高精度加法(可选择有无符号)

高精度减法

代码说明:

  1. 整数减法

    • 处理大整数减法,确保 num_1 \geq num_2,否则交换并标记结果为负数。

    • 反转字符串,从最低位开始逐位相减,处理借位。

    • 去掉前导零并返回结果。

  2. 浮点数减法

    • 补齐小数部分长度,确保两个数的小数位数相同。

    • 移除小数点,将浮点数视为整数进行减法运算。

    • 重新插入小数点并去掉多余的零。

高精度减法(整数)

// 高精度减法(整数)
string subtractBigIntegers(string num1, string num2) {// 确保 num1 >= num2,否则交换并标记结果为负数bool negative = false;if (num1.length() < num2.length() || (num1.length() == num2.length() && num1 < num2)) {swap(num1, num2);negative = true;}// 反转字符串以便从最低位开始计算reverse(num1.begin(), num1.end());reverse(num2.begin(), num2.end());string result;int carry = 0;for (int i = 0; i < num1.length(); ++i) {int digit1 = num1[i] - '0';int digit2 = (i < num2.length()) ? (num2[i] - '0') : 0;int diff = digit1 - digit2 - carry;if (diff < 0) {diff += 10;carry = 1;} else {carry = 0;}result.push_back(diff + '0');}// 去掉前导零while (result.length() > 1 && result.back() == '0') {result.pop_back();}// 反转回正常顺序reverse(result.begin(), result.end());// 如果结果为负数,添加负号if (negative) {result = "-" + result;}return result;
}

 高精度减法(浮点数)


// 补齐小数部分长度
void padDecimal(string &num1, string &num2) {size_t dot1 = num1.find('.');size_t dot2 = num2.find('.');if (dot1 == string::npos) num1 += ".0";if (dot2 == string::npos) num2 += ".0";size_t decimal1 = num1.length() - num1.find('.') - 1;size_t decimal2 = num2.length() - num2.find('.') - 1;if (decimal1 < decimal2) {num1.append(decimal2 - decimal1, '0');} else if (decimal1 > decimal2) {num2.append(decimal1 - decimal2, '0');}
}// 高精度减法(浮点数)
string subtractBigFloats(string num1, string num2) {// 补齐小数部分padDecimal(num1, num2);// 移除小数点,将浮点数视为整数size_t dot1 = num1.find('.');size_t dot2 = num2.find('.');num1.erase(dot1, 1);num2.erase(dot2, 1);// 调用整数减法string result = subtractBigIntegers(num1, num2);// 重新插入小数点int decimalPlaces = max(num1.length() - dot1, num2.length() - dot2);result.insert(result.length() - decimalPlaces, ".");// 去掉末尾多余的零result.erase(result.find_last_not_of('0') + 1, string::npos);if (result.back() == '.') result.pop_back();return result;
}

高精度乘法

代码说明:

  1. 高精度整数乘法

    • 使用字符串表示大整数。

    • 通过逐位相乘并处理进位来实现乘法。

    • 最后去除前导零并返回结果。

  2. 高精度浮点数乘法

    • 首先找到小数点的位置,将浮点数转换为整数。

    • 计算小数点的总位数。

    • 使用整数乘法进行计算。

    • 最后根据小数点的位数插入小数点。

高精度乘法(整数)

// 高精度整数乘法
string multiply(string num1, string num2) {int n1 = num1.size();int n2 = num2.size();vector<int> result(n1 + n2, 0);// 从低位到高位逐位相乘for (int i = n1 - 1; i >= 0; i--) {for (int j = n2 - 1; j >= 0; j--) {int mul = (num1[i] - '0') * (num2[j] - '0');int sum = mul + result[i + j + 1];result[i + j + 1] = sum % 10;result[i + j] += sum / 10;}}// 去除前导零int i = 0;while (i < result.size() && result[i] == 0) {i++;}// 将结果转换为字符串string res;for (; i < result.size(); i++) {res.push_back(result[i] + '0');}return res.empty() ? "0" : res;
}

 高精度乘法(浮点数)

// 高精度浮点数乘法
string multiplyFloat(string num1, string num2) {// 找到小数点的位置size_t dot1 = num1.find('.');size_t dot2 = num2.find('.');// 如果没有小数点,则当作整数处理if (dot1 == string::npos) dot1 = num1.size();if (dot2 == string::npos) dot2 = num2.size();// 移除小数点,将浮点数转换为整数string int1 = num1.substr(0, dot1) + num1.substr(dot1 + 1);string int2 = num2.substr(0, dot2) + num2.substr(dot2 + 1);// 计算小数点的总位数int decimalPlaces = (num1.size() - dot1 - 1) + (num2.size() - dot2 - 1);// 进行整数乘法string result = multiply(int1, int2);// 插入小数点if (decimalPlaces > 0) {result.insert(result.size() - decimalPlaces, ".");}return result;
}

 高精度除法

高精度除法(整数)

// 高精度整数除法
string highPrecisionDivide(string dividend, int divisor) {string result;int index = 0;int temp = dividend[index] - '0';while (temp < divisor) {temp = temp * 10 + (dividend[++index] - '0');}while (dividend.size() > index) {result += (temp / divisor) + '0';temp = (temp % divisor) * 10 + (dividend[++index] - '0');}if (result.length() == 0) {return "0";}return result;
}

 高精度除法(浮点数)

// 高精度浮点数除法
string highPrecisionFloatDivide(string dividend, int divisor, int precision) {size_t decimalPoint = dividend.find('.');if (decimalPoint == string::npos) {decimalPoint = dividend.length();}string integerPart = dividend.substr(0, decimalPoint);string fractionalPart = dividend.substr(decimalPoint + 1);string integerResult = highPrecisionDivide(integerPart, divisor);string fractionalResult;int temp = 0;for (int i = 0; i < fractionalPart.length(); ++i) {temp = temp * 10 + (fractionalPart[i] - '0');}for (int i = 0; i < precision; ++i) {temp *= 10;fractionalResult += (temp / divisor) + '0';temp %= divisor;}return integerResult + "." + fractionalResult;
}

代码说明:

  1. 高精度整数除法

    • highPrecisionDivide 函数实现了高精度整数除法。它通过逐位处理被除数,模拟手工除法的过程。

    • 该函数返回一个字符串形式的结果。

  2. 高精度浮点数除法

    • highPrecisionFloatDivide 函数首先将浮点数分为整数部分和小数部分。

    • 对整数部分调用 highPrecisionDivide  进行除法运算。

    • 对小数部分进行逐位处理,模拟手工除法的过程,直到达到指定的精度。

http://www.dtcms.com/wzjs/28500.html

相关文章:

  • 四平网站建设哪家效果好长春建站程序
  • 三合一建站网站怎么让关键词快速上首页
  • 科技网站内容设计seo权威入门教程
  • 一些网站只能在微信打开怎么做的网站收录查询爱站
  • 施工企业岗位说明书seo排名专业公司
  • 网站空间商是什么意思关键词点击价格查询
  • 毕设做网站和app靠谱的推广平台有哪些
  • 电商平台推广方式seo搜索引擎优化师
  • 广东粤建设计院网站网络整合营销策划书
  • 网站设计的重要性百度推广费用报价单
  • 淮南网站网站建设百度指数官网入口登录
  • 在哪个网站注册域名好媒体平台
  • 网站建设源代码版权问题销售营销方案100例
  • 网站站点地图设计企业推广方式
  • 东莞阳光网入口百度推广和优化有什么区别
  • 衡阳网站优化整合营销
  • 路由器做网站有人看片吗免费的
  • 惟博df1042可以看多远广州seo优化排名公司
  • 全屏网站 代码湖南关键词优化品牌价格
  • 做赌博网站刷单违法吗什么网站可以发布广告
  • 做视频网站视频用什么插件吗大众网疫情最新消息
  • 网站建设备案不通过seo关键词排名报价
  • 汕头专业的开发网站方案游戏推广平台代理
  • 平台建站临沂森工木业有限公司
  • 社区网站开发进度表友情链接交换形式
  • 网站为什么要续费seo外包公司多吗
  • wordpress做社区网站站长工具seo综合查询下载
  • 创建网站购买域名要注意什么360搜索推广官网
  • 沈阳成创网站建设公司热点营销案例
  • 旅游网站建设策划方案爱站网