为什么不能在c#对象中执行基本方程

本文关键字:执行 方程 对象 不能 为什么 | 更新日期: 2023-09-27 18:04:38

ViewBag.WinLossRatio = 
    new WinLossRatioVM
    {
        Wins = ctx.Games.Where(p => p.IsWin == true).Count(),
        Total = ctx.Games.Count(),
        Percent = ctx.Games.Where(p => p.IsWin == true).Count() / ctx.Games.Count() * 100
    };

在上面的代码中,我只是试图获得胜利与所玩游戏总数的比率。前两个属性Wins和Total分别返回5和11。最后一个属性只返回零。模型简单如下:

public class WinLossRatioVM
{
    public int Wins { get; set; }
    public int Total { get; set; }
    public int Percent { get; set; }
}

为什么%返回0 ?

为什么不能在c#对象中执行基本方程

根据需要将属性转换为小数、浮点数或双精度。

Percent = ctx.Games.Where(p => p.IsWin == true).Count() / ctx.Games.Count() * 100

使用整数除法,你需要将至少一个参数转换为浮点数,这样你就使用了浮点除法:

Percent = Convert.ToInt32(ctx.Games.Where(p => p.IsWin == true).Count() / (float)(ctx.Games.Count()) * 100);

整数除法将截断任何小数部分,在百分比计算中留下0 <100%