如何在没有'*'或'/'运算符
的情况下将两个数相乘它与其他问题不同,因为我也需要 float
我需要考虑消极的积极的,真实的分数,每种可能的乘法
我有一个想法,我会先做实数(5,3,8等等),然后是分数(0.5,0.33333,等等......)
float fraction = (float)x - (int)x; // I can calculate the fraction with this
我认为我可以将该分数“乘以”为int,然后与实数相乘,但问题是我如何将它返回原来的样子(除以十分之一除以)
有了这个(执行此功能,直到数字返回大于0):
float multiBy10(float a)
{
float backup = a;
for(int i = 0; i < 10; i++, a += backup);
return a;
}
我看到了这个here但是使用int和bit操作它不适用于float number
int divs10(int n)
{
int q, r;
n = n + (n>>31 & 9);
q = (n >> 1) + (n >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16);
q = q >> 3;
r = n - q*10;
return q + ((r + 6) >> 4);
// return q + (r > 9);
}