【问题标题】:How to print floating point number in C++ similar to C如何在类似于 C 的 C++ 中打印浮点数
【发布时间】:2017-01-08 15:19:33
【问题描述】:

我想以 pdb 格式打印我的数据,这是一种存储原子坐标的特定格式,以便某些标准分子可视化软件可以读取它们。

目前我正在使用围绕常规 C++ 的工作并将我的 std::cout 与 printf 结合起来以获得所需的格式化输出,

std::cout << std::setw(6) << "ATOM" << std::setw(5) << "0" << " " 
          <<  std::setw(4) << "C" << std::setw(12) << global_id
          << "    ";
 printf("%8.3f %8.3f %8.3f %6.2f %6.2f \n", pos[0], pos[1], pos[2], tt, ss );

其中 global_id 是一个整数。

那么我怎样才能消除这个 printf 并只使用 std::cout 在小数点前后指定精度来编写整个语句。

任何帮助将不胜感激。

【问题讨论】:

  • 我在您使用的格式化字符串中没有看到任何特殊内容,因此您可以使用 fixedsetprecisionsetw 完成所有操作。默认情况下,coutstdout 同步,所以它应该可以工作,但是同步会引入不必要的低效率。也不能一概而论。我只需将printf 替换为Boost 输出格式,或将sprintf 替换为合适的缓冲区。你可以封装这个。这不是你要问的(答案很简单),但这是我要做的。

标签: c++


【解决方案1】:

您正在寻找的机制是setprecision(),如下所述:http://en.cppreference.com/w/cpp/io/manip/setprecision

结合setw():

http://en.cppreference.com/w/cpp/io/manip/setw

【讨论】:

    猜你喜欢
    • 2020-11-11
    • 2012-03-21
    • 2015-12-31
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多