结果小于 1 的整数除法

Integer division which results in less than 1

例如,我们如何使用 1000 的比例因子来避免在处理整数时将 0 变为 a。它在 32 位微控制器上。

示例:

uint32 a;
a = 211/555 * x;

我们是不是应该把右边的所有值都乘以 1000,然后再除以 1000?

您可以在除法之前应用比例因子。

在你的例子中,你正在有效地做(假设 x=1000)

a = (211/555) * x;

结果会是

a = 0*x;

如果你把它改成

a =(x*211)/555;

你可以先强制乘法,创建一个大于 555 的分子,这将允许 a 大于 0。

您不能再将此结果除以 1000,因为它仍然小于 0,无法以整数数据类型存储。

您需要将其保留为这种形式并始终将该数字视为具有 1000 的乘数(例如,如果单位最初是千米,则新数字以米为单位),否则您将不得不使用可以处理小于 1 的数字(如浮点数或双精度数)。