问题描述
- 求助!!c++发现一个奇怪的问题
-
#include <iostream> #include <cmath> #include <cstdio> using namespace std; bool isint(double num); int main(){ double a=log(536870912)/log(2); printf("%fn",a); cout<<isint(a)<<'t'<<isint(29.00); return 0; } bool isint(double num){ int tnum=int(num); cout<<tnum<<'t'<<num<<endl; if(num-tnum) return false; return true; }
明明log(536870912)/log(2)和29值一样,为什么最后调用isint()的结果不同
解决方案
把a向0后面输出16位,你就会发现他并不是29.0。
解决方案二:
isint((int)29.00)
解决方案三:
把a向0后面输出16位,你就会发现他并不是29.0。
时间: 2024-10-25 18:15:25