1.float和double间的互相转换及int与double的互相转换
一.float和double互相转换。不过可能会有损精度(因为double精度更大,所以定义浮点数一般使用double)
转换方式:
1.可以直接赋值,下面是搜算到的相关代码:
// double 转 float(可能丢失精度)
double d_val = 3.1415926535;
float f_val = static_cast
2.使用atof()、strtod()类的函数:
atof()是将float转为double,strtod()则是将double转为float。
相关代码:
// float转double
float f_val = 7.5f;
double d_val = atof(std::to_string(f_val).c_str());
// double 转 float
double d_val = 9.87654321;
float f_val = static_cast
二.int与double的互相转换
转换方式:
1.直接用int()函数来强制转换:
double s;
cout << int(s);
2.直接将int赋值给double:
int a = 1;
double b = a; //将1变成1.0
3.可以使用四舍五入函数来转换:
double s;
int a = round(s); //四舍五入
int b = floor(s); //向下取整
int c = ceil(s); //向上取整
(后续会讲关于四舍五入函数的使用场景)
2.四舍五入类的函数
一.四舍五入:
比较少用,如果遇到模拟计算机的题可能需要使用。
使用下列代码,输出的数为2,如果s=1.4,则输出来的数为1。
double s=1.5;
int a = round(s);
二.向下取整:
遇到例如:缝裤子时,布料还剩下一点,但是不够做一条新裤子,则需要向下取整,因为不能做一条半成品裤子给顾客。
使用下列代码,输出的数为1,即使s=1.9,输出来的数仍为1。
double s=1.5;
int a = floor(s);
三.向上取整:
在遇到例如:最多能倒多少杯水(不足一杯算一杯)的题时,需要向上取整,因为半杯也是水,也要算作一杯。
使用下列代码,输出的数为2,即使s=1.1,输出来的数也为2。
double s=1.5;
int a = ceil(s);
3.关于sort排序的注意事项
在运用sort排序时,需注意数组的定义:
若数组定义过小,则会导致无法正常排序。
若数组定义过大,则会影响排序,因为数组过大后会有0来补位,排序时会把0拍到第一位(除了数组中有负数以外),从而导致排序错误,不能进行下一步编程。