我正在Arduino上编写一些需要快速运行并近似计算整数百分比的代码。
例如,给定一个数字,我希望找到它的90%、70%或30%等。显而易见的方法是乘以浮点数,例如 x * 0.9; 或 x * 0.3;但由于我需要速度,我想避免使用浮点数计算。如果只是除以2的幂,我会进行位移操作,但是否有类似的技术可以使用整数来近似计算90%、80%等?
例如,给定一个数字,我希望找到它的90%、70%或30%等。显而易见的方法是乘以浮点数,例如 x * 0.9; 或 x * 0.3;但由于我需要速度,我想避免使用浮点数计算。如果只是除以2的幂,我会进行位移操作,但是否有类似的技术可以使用整数来近似计算90%、80%等?
2^16
应该足够准确了。如果需要更高的精度,您可以使用比2^16
更大的数值。 - Mysticial(y * x * 655 + 32768) / 65536
。 - Mysticial