首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++如何为浮点数设置固定的小数精度

C++如何为浮点数设置固定的小数精度
EN

Stack Overflow用户
提问于 2011-07-12 07:23:05
回答 2查看 5.8K关注 0票数 4

我有一个API调用,它返回一个双精度值。double的小数长度可以从多个小数位到几个小数位(这都取决于执行器的状态)。此双精度表示执行器范围半径上的当前位置。我对这样一个详细的数字不感兴趣,因为它会给系统增加很多噪音。我一直在使用浮点数来节省空间,但我仍然有6-8个小数长度的浮点数。我对floor或ceil不感兴趣,只是因为它不能完成我想要的工作。例如,我有以下数字:

代码语言:javascript
复制
-2.05176
-0.104545
 0.30643
 0.140237
 1.41205
-0.176715
 0.559462
 0.364928

我希望精度设置为小数点后2位。我不是在谈论std::cout上的输出精度,我知道如何设置它。我说的是浮点数的实际精度。即:我感兴趣的浮点数谁将有0.XX格式和0.XX00000000000的实际精度。因此,将上面的列表转换为:

代码语言:javascript
复制
-2.05
-0.10
 0.30
 0.14
 1.41
-0.17
 0.55
 0.36

我知道boost有一个数值转换模板,但我不知道如何使用较低的精度从浮点型转换为浮点型。有人能帮帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-12 07:35:17

你就不能把它绕过去。

代码语言:javascript
复制
float round(float num, int precision)
{
    return floorf(num * pow(10.0f,precision) + .5f)/pow(10.0f,precision);
}
票数 6
EN

Stack Overflow用户

发布于 2011-07-12 07:32:10

float和double的精度取决于硬件。任何其他的东西都需要在软件中编码。

您可以尝试缩放,在int中工作:

代码语言:javascript
复制
-205
 -10
  30
  14
 141
 -17
  55
  36
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6657858

复制
相关文章

相似问题

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