很抱歉问了这样一个初学者问题,但我想不通。
我有一个长整数,我想将其除以 1.28,然后向上或向下舍入到最接近的整数。
long size = 24524343254;
double ratio = 1.28;
size = size * 1.28; //Error Cannot implicitly convert type 'double' to 'long'
最佳答案
您需要将 double 结果显式转换回 long(如编译器所述 - 没有隐式转换):
size = (long)Math.Round(size * 1.28);
如果要四舍五入到最接近的值,则需要 Math.Round
(有一种特殊情况,当要四舍五入的数字在两个数字的中间时,默认情况下它会四舍五入到最接近的偶数) .如果您只想向 0 舍入,也可以简单地将结果转换回 (long)(size * 1.28)
。
正如@CodeInChaos 所指出的,从 long 到 double 的隐式转换(size * 1.28
将首先将 size
转换为 double)会导致精度损失,因为doubles only have a precision of 53 bits但 long 是 64 位。
关于c# - 如何将长乘以双,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650710/