繁体   English   中英

C++中没有科学计数法的字符串转换为double

[英]Conversion of string to double without scientific notation in C++

我有一个字符串变量,想在没有任何科学记数法的情况下将其转换为双精度。 我尝试使用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

我尝试使用setprecisionfixed但我无法将结果存储到变量中。 有没有办法可以将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;

现场演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM