【发布时间】:2016-02-02 22:27:54
【问题描述】:
我在其中一个库中有以下代码,导致一些数字以科学记数法的形式显示。
T value = 0;
template<typename U> void process(U& buf, DataOption holder) const {
if (holder == DataOption::TYPES) {
switch (type_) {
case teck::PROC_INT:
buf << "{\"int\":" << value << "}";
break;
case teck::PROC_LONG:
buf << "{\"long\":" << value << "}";
break;
case teck::PROC_FLOAT:
buf << "{\"float\":" << value << "}";
break;
case teck::PROC_DOUBLE:
buf << "{\"double\":" << value << "}";
break;
default:
buf << "{\"" << type_ << "\":" << value << "}";
}
}
}
对于上述一些不同的情况,“值”以科学计数法出现。如何避免显示科学计数法而是显示完整数字?我做了一些研究,我可以使用“std::fixed”,但我应该在哪里使用它?
【问题讨论】:
-
您只需要在某个时候执行
buf << std::fixed,这将意味着从那时起buf的固定精度输出,直到您将其更改为其他内容。除了std::setw,流操作符是“粘性的”。假设buf是一个流。