结果小于 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 的数字(如浮点数或双精度数)。
例如,我们如何使用 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 的数字(如浮点数或双精度数)。