日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++如何检查浮点数是否为整数

發(fā)布時(shí)間:2023/12/20 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++如何检查浮点数是否为整数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如何檢查浮點(diǎn)數(shù)是否為整數(shù)

今天在寫程序的時(shí)候,突然遇到這個(gè)問題——如何判斷一個(gè)浮點(diǎn)數(shù)小數(shù)點(diǎn)后是否有小數(shù)值?

剛開始想了一個(gè)比較麻煩的方法,感覺不妥,太浪費(fèi)時(shí)間了,然后就上網(wǎng)看了一些其他人的思路,借此總結(jié)一下幾種判斷方式。

Number 1: 向下向上取整法
int main() {float num1 = 10.0f;float num2 = 2.0f;double res = num1 / num2;if(ceil(res) == floor(res)) std::cout << "整數(shù)" << std::endl;elsestd::cout << "小數(shù)" << std::endl;return 0; }

頭文件 <cmath>

ceil():Computes the smallest integer value not less than arg. —— 向上取整

floor() : Computes the largest integer value not greater than arg. —— 向下取整

向上,向下取整后相同,則為整數(shù)

Number 2: fmod 浮點(diǎn)取余法
int main() {float num1 = 10.0f;float num2 = 2.0f;double res = num1 / num2;if(fmod(res,1.0)==0.0)std::cout << "整數(shù)" << std::endl;elsestd::cout << "小數(shù)" << std::endl;return 0; }

頭文件 <cmath>

double fmod( double x, double y ): Computes the floating-point remainder of the division operation x/y.——浮點(diǎn)型取余,例如 fmod(10.1,3.1) = 0.8 ,可以自行體會(huì)一下

浮點(diǎn)型取余后為0,則為整數(shù)

推薦一片博文:浮點(diǎn)型取余與%的區(qū)別

Number 3: modf 整數(shù)小數(shù)分離法
int main() {float num1 = 10.0f;float num2 = 2.0f;double res = num1 / num2;double interger = 0 ; //用來存放整數(shù)if(modf(res,&interger) == 0.0)std::cout << "整數(shù)" << std::endl;elsestd::cout << "小數(shù)" << std::endl;return 0; }

頭文件 <cmath>
double modf( double x, double* iptr ):Decomposes given floating point value x into integral and fractional parts——分解浮點(diǎn)數(shù)為整數(shù)和小數(shù)

x是要檢驗(yàn)的數(shù)據(jù);

iptr:是一個(gè)存放整形變量的地址,類型是double;

返回值:返回值是小數(shù)點(diǎn)后的值

返回值如果為0.0,即為整形

Number 4: 作差法(最簡(jiǎn)單)
int main() {float num1 = 10.0f;float num2 = 2.0f;double res = num1 / num2;if(res - int(res) == 0)std::cout << "整數(shù)" << std::endl;elsestd::cout << "小數(shù)" << std::endl;return 0; }

int(res):強(qiáng)制類型轉(zhuǎn)換為整形,然后浮點(diǎn)型與整形作差

如果為0,則為整形

恕我把最簡(jiǎn)單的放在最后,目的為了大家多學(xué)點(diǎn)東西。如果有更好的想法,也可以寫下來,互相學(xué)習(xí)!

。???。

總結(jié)

以上是生活随笔為你收集整理的C++如何检查浮点数是否为整数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。