/// <summary>指定した精度の数値に四捨五入します。</summary>
/// <param name="dValue">丸め対象の倍精度浮動小数点数。</param>
/// <param name="iDigits">戻り値の有効桁数の精度。</param>
/// <returns>iDigits に等しい精度の数値に四捨五入された数値。</returns>
static double ToHalfAdjust(double dValue, int iDigits)
{
double dCoef = System.Math.Pow(10, iDigits);
return dValue > 0 ? System.Math.Floor((dValue * dCoef) + 0.5) / dCoef :
System.Math.Ceiling((dValue * dCoef) - 0.5) / dCoef;
}