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
广告