为什么这个 ulong 除以 ulong 给我 0?

Why does this ulong divided by ulong give me 0?

我正在获取计算机系统的总 RAM 和可用 RAM,并试图计算出可用的百分比。

我正在使用以下代码:

double percent = my.Info.AvailablePhysicalMemory / my.Info.TotalPhysicalMemory;

也尝试过:

decimal percent = my.Info.AvailablePhysicalMemory / my.Info.TotalPhysicalMemory;

我确定这是类型问题,但我不确定为什么这两种方法的结果都是 0。

实际值为 Total:17072574464 和 Available:8746000384。这些值从系统转换为 ulong 返回。那么百分比总是等于 0 是多少呢?如果我直接输入数字,它就可以正常工作。只是不能使用 ulong 变量 - 因此我确定问题是我缺乏 C# 类型的经验。

您正在尝试用一个整数除以一个总是向下舍入的整数。除法前需要转换为浮点数;例如:

double percent = my.Info.AvailablePhysicalMemory * 1.0 / my.Info.TotalPhysicalMemory;