Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#长数的不正确除法返回零_C#_Casting_Division_Typeconverter_Int64 - Fatal编程技术网

C#长数的不正确除法返回零

C#长数的不正确除法返回零,c#,casting,division,typeconverter,int64,C#,Casting,Division,Typeconverter,Int64,这就是我的C代码: 免费是3538713952,大小是64419262464 手动分割自由/我得到的大小0.5493 问题:不是总回报率54.93而是回报率0 你知道为什么会这样吗 谢谢您正在对整数进行除法,因此可以得到一个整数 如果free和size需要是int64,您可以将它们转换为float或double等 double total = ((double)Free/(double)Size) * 100 但无法将54.93存储到int中。。所以总数不能是整数你在除以整数,所以你得到一个整

这就是我的C代码:

免费是3538713952,大小是64419262464

手动分割自由/我得到的大小0.5493

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

你知道为什么会这样吗


谢谢

您正在对整数进行除法,因此可以得到一个整数

如果free和size需要是int64,您可以将它们转换为float或double等

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

但无法将54.93存储到int中。。所以总数不能是整数

你在除以整数,所以你得到一个整数

如果free和size需要是int64,您可以将它们转换为float或double等

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

但无法将54.93存储到int中。。所以Total不能是整数,因为您正在尝试将两个整数除。这是预期的行为

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

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

您正在尝试将两个整数除。这是预期的行为

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

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

整数除法!=浮点除法。维基百科:为什么必须是Int64?我肯定这在这里的某个地方是重复的(也许不是用
Int64
而是…),如果你需要坚持使用
Int64
,试试
(免费*100)/Size
数字1和
number2
是什么类型?因为你要把它们投给积分积分积分师!=浮点除法。维基百科:为什么必须是Int64?我肯定这在这里的某个地方是重复的(也许不是用
Int64
而是…),如果你需要坚持使用
Int64
,试试
(免费*100)/Size
数字1和
number2
是什么类型?因为要将它们转换为记录的整数,所以只需转换其中一个变量。但这是一个小问题。@gunr217这是真的。是的,正如我在上面回答的:我将回答我自己的问题:我必须使用double,当这样做时它起作用:-)对于记录,您只需要强制转换其中一个变量。但这是一个小问题。@gunr2171这是真的。是的,正如我上面回答的:我将回答我自己的问题:我必须使用double,当这样做时它起作用:-)是的,正如我上面回答的:我将回答我自己的问题:我必须使用double,当这样做时它起作用:-)是的,正如我在上面所回答的:我将回答我自己的问题:我必须使用double,这样做时它起作用了:-)