C++字符和数值转换,double数值比较,小数精度处理,满满实战干货,闭眼入

C++字符和数值转换,double数值比较,小数精度处理,满满实战干货,闭眼入

数值类型 和string互转

1.int转string的方式
c++11标准增加了全局函数std::to_string:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

采用sstream中定义的字符串流对象来实现。
ostringstream os; //构造一个输出字符串流,流内容为空
int i = 12;
os << i; //向输出字符串流中输出int整数i的内容
cout << os.str() << endl; //利用字符串流的str函数获取流中的内容
字符串流对象的str函数对于istringstream和ostringstream都适用,都可以获取流中的内容。

2.string转int
可以使用std::stoi/stol/stoll等等函数

数值比较

在这里插入图片描述浮点数比较:std::abs(a - b)可用于浮点数加减

#include <iostream>
#include <algorithm>

int main()
{
    double a = 1.1;             //1.1000000000000001
    double b = 1.1 + 1e-16;  //1.1000000000000001,精度损失
    bool ret = std::abs(a - b) < std::abs(std::min(a, b)) * std::numeric_limits<double>::epsilon(); //true
}

小数精度处理

在实际应用中,我们经常需要对小数进行四舍五入然后取其精度。C++中,可以使用round函数来实现小数的四舍五入。当然也可以使用字符处理函数如CString::Format(),sprintf()等处理函数,但都涉及到double类型转字符后再转回double的过程,在大数据处理时会异常耗时,而round()函数可以使百万数据的处理时间在毫秒级内。

int main()

{

double a = 3.1415926;

double b = round(a * 100) / 100;

cout << b << endl;

return 0;

}

输出结果为:3.14
在上述代码中,我们将浮点数a乘以100,然后使用round函数进行四舍五入,最后再除以100,就可以得到保留两位小数的结果。需要注意的是,在使用round函数时,需要包含cmath头文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值