不带浮点数处理C中的小数

不带浮点数处理C中的小数,c,microcontroller,bitwise-operators,C,Microcontroller,Bitwise Operators,我在C中有一个问题,我不允许使用浮点,因为它将被闪存的微控制器不支持该数据类型。现在我所有的整数都被四舍五入了。我怎么处理这个案子 一个简短的研究表明使用位操作,如左移位和右移位。我知道这些行动是什么。但我不知道如何使用这些操作来实现我想要的 通常微控制器没有浮点单元,一切都与整数一起工作。但这取决于你喜欢整数的单位 例如: 100可以是100厘米或1,00米 1000可以是100,0厘米或1000米,以此类推 请看一下描述: 另一种可能性是 如果你使用谷歌Q数字格式或一些变体,你会得到一些结果

我在C中有一个问题,我不允许使用浮点,因为它将被闪存的微控制器不支持该数据类型。现在我所有的整数都被四舍五入了。我怎么处理这个案子


一个简短的研究表明使用位操作,如左移位和右移位。我知道这些行动是什么。但我不知道如何使用这些操作来实现我想要的

通常微控制器没有浮点单元,一切都与整数一起工作。但这取决于你喜欢整数的单位

例如: 100可以是100厘米或1,00米

1000可以是100,0厘米或1000米,以此类推

请看一下描述:
另一种可能性是

如果你使用谷歌Q数字格式或一些变体,你会得到一些结果。 它通常用于C中一些与DSP相关的主题。另一篇博客文章解释了数字格式,并且是C中q数字的示例代码实现


一般来说,你可以说q数表示-1到1之间的数字,而不使用浮点运算。

这取决于你打算如何使用这些值。你的用例是什么?你有什么样的价值观?如果您知道您将有两个小数,例如美国货币金额,典型的策略是将所有数字乘以100,并将其视为整数美分,而不是小数美元。只有您才能决定您必须做什么,从而决定最好的方法…即使微控制器在硬件中不支持浮点,开发工具链的C库可能支持软件中的浮点数学。有没有不允许您使用软件浮点库的原因?