当已知位置数时,按 10 的幂缩放 System.Decimal 值的最佳方法是什么?
value * (decimal)Math.Pow(10, places) 想到,但它有两个缺点:
它引入了浮点数,这使得随着数字变大而难以推断舍入错误。
当您尝试做的只是更改已在十进制数据结构中编码的简单比例组件时,进行求幂似乎有些过分。
有没有更好的方法?
我正在研究实现基于整数的幂函数pow(int,int)的最有效方法.
这是他们得到的答案.
我试图让它适用于C#,但我正在将int与bool和所有其他东西进行比较...而且我无法弄清楚他们为什么要比较而且1这不是那个意思和真实吗?有什么意义呢.它看起来效率不高.
int ipow(int base, int exp)
{
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
return result;
Run Code Online (Sandbox Code Playgroud)
}
我在比较中做exp ==但是1仍然在那里,我不知道我是否需要它.
有人知道"if(exp&1)"中的1是什么吗?或者如果我需要它?我看不出用途.