(如有错误,望留言指正,感谢!)
unsigned long long:
范围:0~2^64-1 = 1844674407370955161;
输入输出:
unsigned long long a,b,c; scanf("%llu",&a); printf("%llu\n", a); cin>>b; cout<<b<<"\n"; scanf("%I64u",&c); printf("%I64u\n",c );
有的OJ要用%I64u使用uLL,用%I64d使用LL,比如codeforces等。
Microsoft Visual C++ 6.0 :要用 %I64u
Win系统:可以用 %llu
Linux系统:要用 %llu
(听说还有更大_int128,但是我不会用)
long double:
比特位:128位
有效数字:18~19
(具体与编译器,操作系统有关)
输入输出:
long double a,b; scanf("%llf",&a); printf("%llf\n",a ); cin>>b; cout<<b<<"\n";
tips:
刷ACM题的时候,当输出类型double时,不一定需要使用%lf,一般都使用%f。
浮点类型的输出方法还有:%e/%E 和 %g;一个是指数形式,一个是自动选择
向上/下取整:
向上取整:double ceil(double x)
向下取整:double floor(double x)
四舍五入:
double b;
int a=(int)(b+0.5);
精度控制:
1).
const double eps = 1e-8;
在强制类型转化和比较浮点大小时,加上eps往往更为保险,而eps具体精度,视题目而定!
double强制转化为int:
int a; double b; a = (int)(b+eps);
比较浮点类型大小:
double a,b; if(a-b>eps)printf("a比较大\n"); if(a-b<-eps)printf("a比较小\n");
2).
控制输出几位小数时:
#include <iomanip> double a; printf("%.4f\n",a ); printf("%.*f\n",4,a); double b; cout.setf(ios::fixed); cout<<setprecision(4)<<b<<"\n"; double c; cout<<fixed<<setprecision(4)<<c<<"\n"; cout.unsetf(ios::fixed);//关闭补0 cout <<setprecision(4)<<d<<"\n";