在 C++ 中计算除法运算后小数点后的位数

c++server side programmingprogramming更新于 2024/9/27 7:45:00

给定两个整数,假设为 num1 和 num2,任务是用 num1 除以 num2,并计算除法运算后小数点后的位数。

例如

输入 − num1 = 2, num2 = 5
输出 − count 为 1

解释 − 当我们用 2 除以 5 时,即 ? = 0.4,因此小数点后的位数为 1,因此 count 为 1。

输入 − num1 = 2, num2 = 0
输出 − 浮点异常(核心转储)

解释 − 当我们用 0 除以任何数字时,它将返回错误并异常终止程序。

输入 − num1 = 2, num2 = 3
输出 − 无限

解释 −当我们用 2 除以 3 即 2/3 = 0.666...,小数点后的数字是无限的,因此我们将打印无限。

以下程序中使用的方法如下

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

  • 创建一个变量 count 来存储小数的数量并用 0 初始化它

  • 创建一个 unordered_map 类型的变量 um

  • 当 num1%num2 != 0 时启动循环

  • 在循环内部,用 num1%num2 设置 num1

  • 将 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; // 结果变量
   unordered_map<int, int> mymap;
   // 计算余数
   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

相关文章