0

こんにちは、モデルに BMI というプロパティがあります。基本的には、CalculateBMI というメソッドから計算された数値を返すロジックですが、これは常に 0 を返します。メソッドの戻り値にブレーク ポイントを設定しても、体重と高さには数字が含まれていますが、_bmi には何も割り当てられません

BMI プロパティ:

 private int _bmi;
        [DisplayName("BMI")]
        public int BMI 
        {
            get {return _bmi;}
            set 
            { 
                _bmi = value;
                _bmi = CalculateBMI();

            } 
        }

CalculateBMI メソッド:

  public int CalculateBMI()
        {

            _bmi = Weight / (Height * Height);
            return _bmi; 
        }
4

3 に答える 3

2

したがって、コメントで私たち全員が言っていることは、必要なのはこれだけだと思います:

public double BMI { get { return Weight / (Height * Height); } }

@ataravati もDisplayName、プロパティ名と同じなので、属性が不要であることについては正しいです。

doubleまた、結果は浮動小数点値になるはずなので、タイプを に変更する必要があります。また、整数除算からゼロを取得しないように、 WeightandHeightプロパティもsであることを確認します。double

于 2013-08-23T17:35:15.420 に答える
1

他の応答でいくつかの問題が指摘されているコードに目を向けるのではなく、値を確認する必要があります。

除算につながるゼロは、次のようなものである可能性があります。

  • Weight= 0
  • 変数BMIの型がint

だから...デバッグを試して、実際の値を使用して計算してください。結果が 0.5 未満の場合は、ほとんどの場合 0 に丸められます。

BMI タイプをDecimalまたはDoubleに変更してみてください。

于 2013-08-23T18:48:24.573 に答える
0

何にも設定したくないので、プロパティはこのようにする必要があります。その場で計算され、読み取り専用アクセスのみが必要です。

public int BMI 
{
    get 
    { 
        return CalculateBMI();
    }
}

ちなみに、Display Name が Property Name と同じ場合、DisplayName 属性は必要ありません。

于 2013-08-23T17:35:55.477 に答える