我正在尝试写一个C#函数的奇怪问题

Div*_*Dan 0 c#

我正在写这个函数.

  const int ProgressBarLength = 230;
  foreach (TransactionDetail item in list)
  {
      var itemProgress =
        ((ProgressBarLength/item.PurchasesRequired) *
        Convert.ToInt32(item.TransactionAmount));

      item.ProgressBar = itemProgress > ProgressBarLength ? ProgressBarLength : itemProgress;
  }
Run Code Online (Sandbox Code Playgroud)

现在TransactionDetail我的循环中有2 秒.

如果item.PurchasesRequired = 500TransactionAmount = 199.0结果值为0.但是,如果item.PurchasesRequired = 5TransactionAmount = 94.0它返回有效结果.

我究竟做错了什么?

Sap*_*pph 7

item.PurchasesRequired一个int

如果是这样,你的问题是整数除法.

ProgressBarLength是一个int,所以230/500 = 0.

使用float,, doubledecimal(在演员表或ProgressBarLength中)保持所需的精确度.