代码的输出为1.068950000E + 002,而不是所需的输出为1.068950000E + 02
val compute = Task {
println(s"Compute")
12
}
compute.flatMap { result =>
// the rest of your program
}
答案 0 :(得分:1)
您不能使用C ++中的标准操纵器以科学计数法设置输出指数的位数。
如果需要,您可以做的一件事是将'0'
删除或添加到结果字符串中。
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <algorithm>
int main()
{
double c = 106.895;
std::stringstream ss;
ss.setf(std::ios_base::scientific | std::ios_base::uppercase);
ss << std::setprecision(9) << c;
auto number = ss.str();
// you can add the '0' if needed
size_t pos = number.size() - 3;
if ( !std::isdigit(int(number[pos])) )
{
if ( number[pos] == 'E' )
number.insert(pos + 1, "+0");
else
number.insert(pos + 1, 1, '0');
}
std::cout << number << '\n'; // --> 1.068950000E+002
// Or remove it
size_t pos_0 = number.size() - 3;
if ( number[pos_0] == '0' )
number.erase(pos_0, 1);
std::cout << number << '\n'; // --> 1.068950000E+02
}