std :: ostream,截断而不是舍入浮点数

时间:2017-11-03 23:15:48

标签: c++ ios floating-point

我有自己的io-manipulator准备一个std::ostream流来打印浮点数:

 #include <iostream>
 #include <iomanip>

 inline std::ostream& my_fmt(std::ostream& os)
 { return os << std::fixed << std::setprecision(2); }

 int main()
 {
      std::cout << my_fmt << 3.146; // It prints 3.15
 }

我想知道如何更改我的io-manipulator以强制截断指定的小数位数而不是舍入,这是std::num_put<CharT>::do_put的默认行为。

例如,在我的代码片段中,我希望程序打印3.14而不是3.15。

我想答案必须是创建我自己的localefacet或其他内容,并通过继承或put的部分专业化来重新实现std::num_put功能,但我不确定IO库和区域设置/方面如何协同工作,我不确切知道我必须做什么,或者我需要专门或重新实现什么。

0 个答案:

没有答案