C++ 如何避免使用科学记数法,而是显示完整的数字?
我在其中一个库中有一个下面的代码,它导致一些数字以科学符号的形式显示C++ 如何避免使用科学记数法,而是显示完整的数字?,c++,scientific-notation,C++,Scientific Notation,我在其中一个库中有一个下面的代码,它导致一些数字以科学符号的形式显示 T value = 0; template<typename U> void process(U& buf, DataOption holder) const { if (holder == DataOption::TYPES) { switch (type_) { case teck::PROC_INT: buf << "{\"
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 << "}";
}
}
}
T值=0;
模板作废流程(U&buf,数据选项持有人)常量{
if(holder==DataOption::TYPES){
开关(类型){
案例技术::过程:
buf它是一个流装饰器:
buf << std::fixed << double_value;
bufstd::fixed
在同一个流中工作,因此在处理无状态流的情况下,这将不起作用
case teck::PROC_DOUBLE:
buf << std::fixed;
buf << "{\"double\":" << value << "}";
case-teck::PROC\u-DOUBLE:
buf您只需要执行buf,如果buf
是一个流,那么这两个示例是相同的。(但是buf
可能是另一个重载运算符的类。)
case teck::PROC_DOUBLE:
buf << "{\"double\":" << std::fixed << value << "}";
template<typename U> void process(U& buf, DataOption holder) const
{
if (holder == DataOption::TYPES)
{
buf << "{\"";
switch (type_)
{
case teck::PROC_INT: buf << "int"; break;
case teck::PROC_LONG: buf << "long"; break;
case teck::PROC_FLOAT: buf << "float"; break;
case teck::PROC_DOUBLE: buf << "double"; break;
default: buf << type_;
}
buf << "\":" << std::fixed << value << "}";
}
}