下面的代码以科学记数法显示浮点数:
float foo = 1.0;
::cout::setf(::std::ios::scientific);
::std::cout << foo;它会生成以下输出:
1.000000e-000我想要做的是以特定的表示法显示浮点数,这种表示法类似于科学表示法,但尾数设置为零。使用与上面相同的浮点数,它将产生:
0.100000e+001在C中,我相信它会是这样写的:
printf("%.6E", foo);更新:嗯,实际上我也不知道用C语言怎么做。Update2:使用iostream格式的示例不正确。我根据Michael Burr的评论对其进行了修改。
发布于 2009-10-19 03:42:47
如果你想在ostreams中做到这一点,我认为你需要使用"facets“。C++的这一鲜为人知的部分让您可以随心所欲地控制格式。
这是对num_put的描述,它是以您不喜欢的方式格式化数字的:http://www.cplusplus.com/reference/std/locale/num_put/
您需要为您的ostream (字面意思是ostr.imbue())“注入”一个包含您将创建的facet的语言环境,以便以您想要的方式格式化数字。
我建议从编写一个函数开始,使用您想要的格式将数字转换为字符串。一旦你有了它,如果你想全力以赴,去做场所和方面的事情,你可以(或者你会认为它太复杂了,这是大多数人最终会做的)。
https://stackoverflow.com/questions/1585222
复制相似问题