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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP