2011-09-16 20 views
0

以下は私が45を入力すると45.00を追加しますが、値が文字列から変換されるため45となります。だから私はこの目標を達成する最も簡単な方法は何ですか。彼らが45を入力すると、値フィールドに45.00が入ります。小数点以下の丸めの問題

public decimal Length 
    { 
     get { if (this is Detail) 
      return ((this as Detail).Length.ToString() == string.Empty) 
      ? 0 : (this as Detail).Length; else return 0; } 
     set 
     { 
      if (this is Detail) 
      { 
       string val = string.Empty; 

       if (!value.ToString().Contains(".")) 
       { 
        val = string.Format("{0}{1}", value.ToString(), ".00"); 
        value =Math.Round(Convert.ToDecimal(val), 2); 
       } 
       else 
        value = Math.Round(value, 2); 
       (this as Detail).Length = (value.ToString().Trim() == 
       string.Empty) ? 0 : value; 
      } 
     } 
    } 
+5

あなたの財産が「これ」が何であるかをチェックする理由は何ですか?あなたの抽象化のレベルに関するより広い問題があるようです。 –

+0

これはデータレイヤー内にあり、winforms textbox bindings元のプロパティはEntity Frameworkから取得しています。 –

答えて

1
val = string.Format("{0:0.00}", value); 
+0

それは小数点を変換するように機能します。それは外に出ます。 –

+0

@DOTNETBEE - 'Length'プロパティの目標は何ですか?数字の長さ、小数点の桁の長さ、全体の長さが欲しいですか?たとえば、「Length」を35.12632に設定した場合、「Length」を取得しようとすると値はどのようになりますか? – SwDevMan81

0

これは、プロパティのセッターとは何の関係もありません。数値を丸めるには、GUIで文字列形式を指定する必要があります。

また、if (this is PersonalDetail)は大規模な設計上の瑕疵です。代わりに、PersonalDetailクラスのLengthプロパティをオーバーライドします。

+0

プロパティのEntity Framewok Classは、PersonalDetailをサブリファレンスとして含むPartial Classとして拡張されているため、PersonalDetailです。 –

+0

プロパティのEntity Framewokクラスは部分クラスとして拡張されていますか?サブリファレンス?かなり理解していない – Bas

+0

デザイナーは誰か他の誰かが残っています。バグを修正しているのを知っていません。デザインと混同しています... –

0

問題は、45mと45.00mは同じことですが、これは小数であるため、使用しない限り「45.00」ではなく「45」が常に表示されます。あなたがそれを出力しようとするたびに、文字列フォーマッタ。あなたはいつものような、何をしたいの出力を行い、別のプロパティを作ることができ

:サイドノートでは

public decimal Length { get; set; } 

public string FormattedLength 
{ 
    get 
    { 
     return String.Format("{0:0.00}", this.Length); 
    } 
} 

私はこれが好きではありませんが、私はそれはあなたが何であるか、多かれ少なかれあなたを取得信じます探している。

+0

いいえこれはテキストボックスにすべてがバインドされているため、45.00私たちは45歳になりますが、私がコードを歩いていくと節約の時に私はそれが再び45歳になったことを見ています。 –

+1

これは、Decimalを直接検査するときに45.00が表示されないためです。小数は、正確ではあるが、何桁の数字が重要であるかを把握しておらず、45m、45.0m、および45.00mを等しく扱い、常に可能な限り最も単純な形式(10進数)で表示します。 – mynameiscoffey

関連する問題