c++ - 在C ++中将字符串转换为没有科学记数法的double
问题描述
我有一个字符串变量,想在没有任何科学记数法的情况下将其转换为双精度。我尝试使用std::stod
,但这不起作用。
std::stringstream timestamp;
timestamp << t_val;
string test = timestamp.str();
cout << test << endl; // this gives 1506836639.96
double d = std::stod(test);
cout << d << endl; // This gives 1.50684e+09 instead of 1506836639.96
我尝试使用setprecision
,fixed
但无法将结果存储到变量中。有没有办法可以将test
(1506836639.96) 的值存储为双精度值?
解决方案
科学记数法与std::cout
,而不是值的存储方式有关,因此您必须std::fixed
在打印值之前使用:
std::cout << std::fixed << std::setprecision(2) << d << std::endl;
正如您在演示中看到的那样,这很好用,它也应该适合您。
正如@goodvibration 所评论 std::to_string
的那样,它也可以工作,但在这种情况下,无法以简单的方式重新定义默认数字或小数位。
std::cout << std::to_string(d) << std::endl;
推荐阅读
- java - Java hangman:检查给定的字母是否在 char 数组中
- python - Python3中的名称错误
- react-native - 带有地图功能的异步等待,promise.all 不起作用
- c - 循环时更改第二级多维数组的值
- python - Matplotlib - 如何将数字彼此相邻放置?
- javascript - ajax调用阻止锚标记的HREF值后返回false不起作用
- python - 在 IBM Cloud Storage 上使用 S3 .putobject 时出现 NoSuchKey 错误
- amazon-web-services - 我可以在 AWS Elastic Beanstalk 中实施 AWS lambda(无服务器)吗?
- reactjs - 我/应该如何拆分我的反应集成测试?
- python - 创建循环以填充数据框时获取 KeyError