在 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