1. 程式人生 > >【經典演算法】:如何判斷整數和浮點數是否相等

【經典演算法】:如何判斷整數和浮點數是否相等

這個問題來自於我解決一個叫做五猴分桃的問題
其中會出現這麼一些資料
這裡寫圖片描述

我需要在右邊第二欄資料裡面找到整數型的資料,比如說 3121這類的資料

但是我給第二欄定義的是float型的資料,如何判斷這個float型的資料是不是整數呢?

用瞭如下方法,注意看!!!
int fun(float num){
int temp = (int)num;
if(temp==num) return 1; //如果類似於int型就返回1
return 0;
}

原理是什麼呢?
比如說 float a=3200; if(a==3200) cout<<”yes”;
這段程式碼是會輸出yes的,
但是如果:
float a = 3200.1;if(a==3200) cout<<”yes”;
這段程式碼是不會輸出yes的

我上面的程式碼用了int強轉,就是得到float型的int值,然後判斷是否相等,懂了吧?

是不是很簡單?

最後附上生成圖片資料的原始碼:(來自於解決五猴分桃問題)

#include <iostream>
using namespace std;
int main(){
    for(int i=1;i<10000;i++){           //從1到10000作迴圈
        float res = i;
        for(int j=0;j<5;j++){
            res = (res-1)*4/5;
        }
        cout
<<i<<" "<<res<<endl; } }