2012-03-05 6 views
0

私はこの方法で、それが唯一のインスタンスの小数点の前に数字を返しますを呼び出すとき:合計文句を言わない追加小数点以下の桁(ダブルス)

1 

2 

3 

= 6 

これは結構ですが、私はしようとすると:

1.5 

2 

3.5 

= 6 

小数点以下の桁数を合計するにはどうすればよいですか?

public class Service1 : System.Web.Services.WebService 
{ 

    [WebMethod] 


    public string CalculateSum(List<int> listDouble) 
    { 
     return listDouble.Sum().ToString(); 


    } 
} 

}

私は結果がどんなに私が入力する内容は常に0

ではない公共の文字列CalculateSum(List<double> listDouble)を使用する場合は

これは私が情報を渡す午前方法です:。

 { 
      CalculateSumOfList.ServiceReference1.Service1SoapClient client = new CalculateSumOfList.ServiceReference1.Service1SoapClient(); 
      CalculateSumOfList.ServiceReference1.ArrayOfInt arrayOfInt = new CalculateSumOfList.ServiceReference1.ArrayOfInt(); 
      arrayOfInt.AddRange(listDouble.Select(d => (int)d).ToList()); 

string result = client.CalculateSum(arrayOfInt); 
label1.Text = Convert.ToString(result); 




       } 
+1

あなたは 'List 'をパラメータとして持っています。 'List 'であってはなりませんか? – Msonic

+1

あなたは整数のリストを渡していますが、小数点以下の桁数はどうなっていますか? – Khan

+0

私はあなたが見ることができるように選択しないでください合計 –

答えて

7

パラメータを確認してください:

public string CalculateSum(List<int> listDouble) 

これは、の整数のリストで、名前にもかかわらずです。あなたはそれがダブルスのリストであることを意味している場合は、タイプを変更する必要があります。

public string CalculateSum(List<double> listDouble) 

あなたはあまりにも...からの戻り値にToStringを呼び出した結果を返す、あなたの適切なSum実装のコメントを解除する必要がありますEnumerable.Selectは本当にあなたが望むことをするつもりはありません。

+0

私は必要な結果を得る方法はありますか? Btwは0を入力した任意の数値に対してダブルリターンを使用します。 Intはその小数点を追加するだけで動作します(明らかに) –

+1

@Garrith:入力タイプを変更しないで?もちろん、いったんデータを失ったら、どうやってそれを元に戻すことになるのでしょうか? –

+2

@ Garritt:パラメータタイプを変更した後、あなたの呼び出しコードの生成されたプロキシを更新しましたか? –

2

あなたは整数のリストを渡しています。整数は小数点以下の値を保持できません。

1

あなたのリストダブルにはダブルスは含まれていません!その整数のリスト!

public string CalculateSum(List<double> listDouble) 
1

この方法ではできません。追加する前に倍精度を整数にキャストします。

あなたはいつもあなたは、10によってそれぞれの数の複数の合計を取得し、10

1
public string CalculateSum(List<int> listDouble) 
{ 
    //return listDouble.Sum().ToString(); 

    return listDouble.Select(n => (double)n).ToString(); 

} 

データ型の問題

public string CalculateSum(List<int> listDouble) 

で結果を分割することができ、小数点の後に一つだけの場所を持っている場合

public string CalculateSum(List<double> listDouble) 
+0

これは二重を使用して0を返します –

1

整数を使用すると、小数点以下を切り捨てる数値が自動的に解析されます。変数を表現するにはDoubleを使用する必要があります。次に、小数点以下を保持できます。

1

あなたは、整数の代わりに、小数

3

あなたの方法は意味がありません、あなたのメソッドのシグネチャに

List<decimal> 

List<int> 

を交換してみてくださいを合計しているように見えます。 int(整数 - ご存知のとおり、全体の値はなので、この問題はdoubleになります)、実際の数値は変更されず、リストの文字列表現が使用されます。それはあなたにも6を与えるべきではありません。あなたが意味すると思う:

public string CalculateSum(List<double> listDouble) 
{ 
    return listDouble.Sum().ToString(); 
}
+0

残りの部分に対してiveが言ったように、これは合計に対する答えとして0を返します。 –

+0

@ギャリス:呼び出しコードを表示できますか? – Ryan

+0

私はちょうどそれを追加しました。 –

関連する問題