TimeSpan平均値計算で小数点以下第1位を四捨五入、切り捨て、切り上げしたい。

おはようございます。
UiPath Studio 2024.10.0 Community editionのユーザです。

下記i_dt_Datatable3をDateでGroubyByして、TimeSpanのAverageを別のi_dt_Datatable4の列名(AVG TimeSpan)に出力したら、下記のように、
小数点以下の端数が出てしまいました。

小数点以下第1位を四捨五入、切り捨て、切り上げして出力する方法をそれぞれご教示ください。(データはダミーですので、手計算はご遠慮ください)

i_dt_Datatable3
[Date,Start,End,TimeSpan,Status
2024/06/06,06:58:14,06:59:54,00:01:40,〇
2024/06/06,12:14:53,12:16:16,00:01:23,〇
2024/06/06,13:00:01,13:01:21,00:01:20,×
2024/06/06,15:01:55,15:03:24,00:01:29,〇
2024/06/06,15:49:52,15:51:10,00:01:18,〇
2024/06/06,16:01:02,16:02:21,00:01:19,〇
2024/06/06,16:25:49,16:27:04,00:01:15,×
]

i_dt_Datatable4
[Date,AVG TimeSpan
2024/06/06,00:01:20.2000000
]

こんにちは

今どのような式を使用していますか?
基本的には対象を秒数で積算して、平均値計算、その後Math.Roundメソッドで所定の桁に丸めることになると思います。

こんな感じです。

Row("AVG TimeSpan").ToString

Average計算は前のアクティビティでやっています。Outputを整形したいです。

そこで四捨五入したほうが良いように思えますので、そちらを共有ください。

Add DataRowアクティビティの列配列でAverage計算やっています。

New Object(){kv.Key,TimeSpan.FromSeconds(arr_DataRow.Average(Function(r) TimeSpan.Parse(r("TimeSpan").ToString).TotalSeconds)).ToString}

以下でいかがでしょうか?

New Object(){kv.Key,TimeSpan.FromSeconds(Math.Round(arr_DataRow.Average(Function(r) TimeSpan.Parse(r("TimeSpan").ToString).TotalSeconds),1,MidpointROunding.AwayFromZero)).ToString}

ありがとうございます。
切り上げと、切り下げはどうなりますか?

以下になると思います。

切り上げ

New Object(){kv.Key,TimeSpan.FromSeconds(Math.Ceiling(arr_DataRow.Average(Function(r) TimeSpan.Parse(r("TimeSpan").ToString).TotalSeconds*10)/10)).ToString}

切り捨て

New Object(){kv.Key,TimeSpan.FromSeconds(Math.Floor(arr_DataRow.Average(Function(r) TimeSpan.Parse(r("TimeSpan").ToString).TotalSeconds*10)/10)).ToString}

PadLeftなど見栄えを修正する代入文は今まで最後に配置してきて問題なかったため、今回最後にOutputを四捨五入できないのは不思議です。説明が可能であれば、最後にOutputを四捨五入できない理由を教示いただけないでしょうか。

できなくはありませんが、TimeSpanベースの文字列なので、それの特定の桁を四捨五入などしようとすると、処理が複雑になるからです。

removed…removed…removed…removed…

New Object(){kv.Key,TimeSpan.FromSeconds(Math.Round(arr_DataRow.Average(Function(r) TimeSpan.Parse(r("TimeSpan").ToString).TotalSeconds),1,MidpointRounding.AwayFromZero)).ToString}
共有いただいた上記コードでWF実行してみたら、下記の計算結果になりました。

[Date,“Status”“〇”" AVG TimeSpan"
2024/06/10,00:01:23.4000000
2024/06/11,00:01:07.1000000
]

TimeSpan数値が小数点以下第1位で四捨五入できていないように見えます。
ご確認をお願いします。

失礼しました。Math.Roundメソッドの第二引数を1から0に変更してみてください。