csvファイルから読み込んだデータテーブルを、計算したい。Sum(round(C列*0.6),1)

csvから読み込んだ、dt1(画像のA1:C3)に対し、
C列を各々に”Sum(round(C列*0.6),1)”の計算をした合計を求めたいです。

C列*0.6の合計値は、過去のトピックを参考にさせていただき、
dt1.AsEnumerable().Sum(Function(r) Int32.Parse(r(“金額”).ToString())*0.6)
と書くことができたのですが、roundの個所がわかりません。

各々の行の結果は不要で、合計額(画像のD4)の数値だけ取得したいのですが、どのように書いたらよいかご教示いただけませんでしょうか?

よろしくお願いいたします。

Hi @Shou-kun

Can you try this

totalSum As Double = dt1.AsEnumerable().Sum(Function(r) Math.Round(Convert.ToDouble(r("Amount")) * 0.6, 1))

Regards,

lrtetala-san

Thank you for your kind! it OK for me!

1 Like

こんにちは

既に解決済みになっていますが、

もしMath.Roundメソッドで正確に四捨五入したい場合はMath.Roundメソッドの引数でMidpointRounding.AwayFromZeroを指定する必要があります。すなわち

 dt1.AsEnumerable().Sum(Function(r) Math.Round(Int32.Parse(r("金額").ToString())*0.6,1,MidpointRounding.AwayFromZero))

これを指定しない場合はMidPointRounding.ToEvenが暗黙で設定されます。
これらの違いはの詳細は以下参照ください

ご参考まで

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.