C++中计算除法结果小数点后位数


假设我们有两个整数,分别为num1和num2,任务是将num1除以num2,并计算结果中小数点后的位数。

例如

Input − num1 = 2, num2 = 5
Output − count is 1

说明 − 当我们将2除以5,即2/5 = 0.4,则小数点后位数为1,计数为1。

Input − num1 = 2, num2 = 0
Output − Floating point exception (core dumped)

说明 − 当我们将任何数字除以0时,程序会返回错误并异常终止。

Input − num1 = 2, num2 = 3
Output − Infinite

说明 − 当我们将2除以3,即2/3 = 0.666...,则小数点后位数是无限的,因此我们将输出“无限”。

下面程序中使用的方案如下:

  • 输入两个变量,例如num1和num2

  • 创建一个变量count来存储小数的位数,并将其初始化为0

  • 创建一个无序映射类型变量um

  • 开始循环,当num1%num2 != 0时

  • 在循环内,将num1设置为num1%num2

  • 将count的值加1

  • 检查如果um.find(num1) != um.end(),则返回-1

  • 在循环外,返回count的值。

  • 打印结果。

示例

 在线演示

#include <iostream>
#include <unordered_map>
using namespace std;
int countdigits(int x, int y){
   int result = 0; // result variable
   unordered_map<int, int> mymap;
   // calculating remainder
   while (x % y != 0){
      x = x % y;
      result++;
      if (mymap.find(x) != mymap.end()){
         return -1;
      }
      mymap[x] = 1;
      x = x * 10;
   }
   return result;
}
int main(){
   int res = countdigits(2, 5);
   (res == -1)? cout << "count is Infinty" : cout <<"count is "<<res;
   return 0;
}

输出

如果我们运行上述代码,我们将得到以下输出:

count is 1

更新于:2020年5月15日

496 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告