c++如何为浮点数设置固定的十进制精度
C++ how to set a fixed decimal precision for a float
我有一个返回双精度的API调用。双精度体的十进制长度可以从许多位变化到几个位(这都取决于执行器的状态)。这个双表示执行器范围半径上的当前位置。我对这么详细的数字不感兴趣,因为它给系统增加了很多噪音。我一直在使用浮点数来节省空间,但我仍然有6-8十进制长度的浮点数。我对地板或天花板不感兴趣,只是因为它做不到我想要的工作。例如,我有数字:
-2.05176
-0.104545
0.30643
0.140237
1.41205
-0.176715
0.559462
0.364928
无论如何都要将精度设置为小数点后2位。我不是在谈论std::cout上的输出精度,我知道如何设置它。我说的是浮点数的实际精度。例如:我对拥有0的浮点数感兴趣。XX格式和0。XX00000000000实际精度。因此,将上面的列表转换为:
-2.05
-0.10
0.30
0.14
1.41
-0.17
0.55
0.36
我知道boost有一个数值转换模板,但我不知道如何使用较低的精度从float转换到float。谁能帮帮我?
你就不能四舍五入吗
float round(float num, int precision)
{
return floorf(num * pow(10.0f,precision) + .5f)/pow(10.0f,precision);
}
float和double的精度取决于硬件。其他的都需要用软件编码。
你可以尝试缩放,在int中工作:
-205
-10
30
14
141
-17
55
36
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 正在将csv文件读取为双精度矢量
- 在 c++ 中使用浮点数、双精度打印十进制
- 使用堆栈将字符串格式的十进制转换为双精度
- 您能否给我一个 16 位(或更多)十进制数,该十进制数仅在第 15 位正确转换为双精度浮点圆
- 十进制后,C 浮子将其串成非固定精度
- 将双精度转换为精度超过 5 位十进制数字的字符串
- 将浮点数转换为字符串,并指定精度和十进制数字数?
- 将带有千(和十进制)分隔符的字符串转换为双精度
- C++ 中的十进制精度错误
- 转换字符串十进制数时的精度
- 指定调用std::copy的十进制精度
- 固定的十进制精度
- 我失去了十进制GPS坐标的精度
- 以 32 个十进制数字分析浮点数/双精度
- c++如何为浮点数设置固定的十进制精度
- 如何在 C++ 中将双精度转换为 C# 十进制
- 如何计算出大双精度中有多少个十进制数字
- 双精度的有效十进制数