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