【发布时间】:2016-10-04 05:02:40
【问题描述】:
我正在使用std::map<string, long>M。我需要在文件上写长值,但要加倍。例如,如果long 的值为 0,那么我需要在文件中写入 0.0,并将 10 写入 10.0,完全采用该格式。我尝试投射double,但在写入文件时,它显示为整数(长整数)。即使我尝试使用std::map<string, double>M,但仍然在打印时,该值被写为整数(长)值而不是小数。如何按照上述格式以double 写入long 值?
对于以下代码:
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
【问题讨论】:
-
在写入文件之前您是否尝试过
std::setprecision()? -
是的,我做了..也没有用
-
张贴minimal reproducible example 你实际拥有的东西。
-
您将不得不在此处添加一段示例代码。没有人知道你在做什么。
setprecision应该可以工作,如果没有,你可能在做一些奇怪的事情。
标签: c++ types casting type-conversion