C#错误的长数除法返回零

时间:2014-08-01 18:48:23

标签: c# casting division typeconverter int64

这就是我在C#代码上的内容:

Int64 Free = Convert.ToInt64(number1); //has to be ToInt64
Int64 Size = Convert.ToInt64(number2); //has to be ToInt64
Int64 Total = (Free/Size) * 100;

免费是35387133952,尺寸是64419262464

手动划分自由/尺寸我得 0.5493

问题:而不是总回报率 54.93 ,而是返回 0

为什么会发生这种情况的任何想法?

由于

2 个答案:

答案 0 :(得分:5)

你试图划分两个整数。这是预期的行为。

如果需要获得浮点答案,则需要将值转换为浮点值:

double Total = ((double)Free/(double)Size) * 100;

答案 1 :(得分:2)

你正在划分整数,所以你得到了一个回归。

如果free和size需要是int64,你可以将它们转换为浮点数或双倍数等。

double total = ((double)Free/(double)Size) * 100

但是没有办法将54.93存储到int ..所以Total不能是int