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

更新於:2020年5月15日

496 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.