我正在使用std::map<string, long>M
。我需要在文件上写长值但是为double。例如,如果long
值为0,那么我需要在文件上写入0.0,将10作为10.0,完全以该格式。我尝试了转换double
但是当写入文件时,它显示为整数(长整数)。即使我尝试使用std::map<string, double>M
但仍然在打印时,该值被写为整数(长)值而不是小数。如何按照上述格式在long
中编写double
个值?
以下代码:
ofstream write;
write.open("3-mer.txt", std::ofstream::out);
std::map<string, long>::iterator it;
it = C.find(threes);
if(it != C.end())
{
write << std::setprecision(1) << (double)(it->second) << " ";
}
我得到如下输出:
1 1e+01 0 2e+01 0 1e+01 0 0 0 0 0 0 0 9 0 0 0
2 0 0 0 0 0 0 0 0 1e+01 0 0 8 0 0 0 0
3 0 0 2e+01 0 0 0 0 0 0 2e+01 2e+01 0 0 0 0 0
答案 0 :(得分:1)
你自己很困惑。
您不需要double
,需要小数点。完全不同的东西。
可怕,但有意思的是,手动打印.0
:
write << (it->second) << ".0 " ;