C 如何只允许浮动到小数点后两位

C 如何只允许浮动到小数点后两位,c,C,例如,我有一个浮点数0.02344489282。我希望能够确保我拥有的每一个浮点值都达到两个小数点:0.02。我确信这是不精确的,但是我的代码中的整个浮点数应该能够截断小数点后两位的任何内容。我看过其他关于堆栈溢出的相关文章,但它们处理的是将小数点输出到两点 目标:以牺牲准确性为代价优化内存消耗。但是准确度可以降低到5-15% 实例:我正在执行一个卡尔曼滤波器。我试图通过缩短变量的位宽度来找到近似值,而不是噪声的精确值和实际值。然后,我将发现前一个脚本和后一个脚本的准确性差异,以及节省了多少能量

例如,我有一个浮点数0.02344489282。我希望能够确保我拥有的每一个浮点值都达到两个小数点:0.02。我确信这是不精确的,但是我的代码中的整个浮点数应该能够截断小数点后两位的任何内容。我看过其他关于堆栈溢出的相关文章,但它们处理的是将小数点输出到两点

目标:以牺牲准确性为代价优化内存消耗。但是准确度可以降低到5-15%


实例:我正在执行一个卡尔曼滤波器。我试图通过缩短变量的位宽度来找到近似值,而不是噪声的精确值和实际值。然后,我将发现前一个脚本和后一个脚本的准确性差异,以及节省了多少能量和内存。

两种可能的解决方案:

  • 使用表示1/100单位的整数
  • 使用浮点,但只使用0.25的整数倍(即以.25、.50、.75或.00结尾的数字),因为这些是仅有两位小数的浮点

  • 因为选项2几乎肯定不是您真正想要的,所以选择1。

    使用整数并除以100。0浮点数通常不能被截断到特定的小数位数。你应该使用其他的数据类型,或者重新考虑你的想法。如果你不能用整数来表示你所有的数字(处理起来就像是1/100的值),那么你会遇到很多与你正在寻找的是定点算术相关的问题。浮点数本质上不能以这种方式截断。一般来说,将数字存储为整数乘以100的想法是一种简单的定点表示法。限制工作值的重要性是一个非常糟糕的想法。始终以可用的最佳意义工作,并在需要时缩短人类的产量。如果目标是减少内存使用,那就不会了。我是这样做的,但我不确定我是否愿意花更多的精力来解决XY问题的变化问题……当然。我只是想提醒你一下。事实上我完全支持你。但我可能会试图保护自己不受那些在某个时候看不到答案是正确的下层选民的影响。一旦达到100k,可能就不那么重要了…;-)