在c ++中将long值写为double文件

时间:2016-06-04 03:33:51

标签: c++ types casting type-conversion

我正在使用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 

1 个答案:

答案 0 :(得分:1)

你自己很困惑。

您不需要double,需要小数点。完全不同的东西。

可怕,但有意思的是,手动打印.0

write << (it->second) << ".0 " ;