首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对浮点数进行四舍五入

对浮点数进行四舍五入
EN

Stack Overflow用户
提问于 2010-09-20 12:44:51
回答 4查看 15.3K关注 0票数 8

我有一个问题,从浮点型转换为c++字符串使用ostringstream。这是我的台词:

代码语言:javascript
运行
复制
void doSomething(float t)
{
    ostringstream stream; 
    stream << t;
    cout << stream.str();
}

当t的值为-0.89999时,它会舍入为-0.9,但当它的值为0.0999或小于此值时,例如1.754e-7,它就会打印出来,而不会舍入。解决这个问题的办法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-20 12:51:34

您需要使用precision设置ostringstream的精度

e.g

代码语言:javascript
运行
复制
stream.precision(3);
stream<<fixed;    // for fixed point notation
//cout.precision(3); // display only
stream << t;

cout<<stream.str();
票数 17
EN

Stack Overflow用户

发布于 2010-09-20 12:49:48

如果您想要显示特定数量的有效数字,请尝试使用setprecision(n),其中n是您想要的有效数字数量。

代码语言:javascript
运行
复制
#include <iomanip>

void doSomething(float t)
{
    ostringstream stream; 
    stream << std::setprecision(4)  << t;
    cout <<  stream.str();
}
票数 7
EN

Stack Overflow用户

发布于 2010-09-20 13:25:54

如果您希望使用定点而不是科学记数法,请使用std::fixed

代码语言:javascript
运行
复制
stream << std::fixed << t;

此外,您可能想要设置前面提到的精度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3748749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档