C#.NETのサンプルコードを掲載しています。
      
指定した小数桁で四捨五入する。
有効桁を指定して四捨五入するサンプルです。
テストコード(ライブラリ)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

public class MyMath
{
    /// <summary>
    /// 四捨五入します。
    /// </summary>
    /// <param name="d">小数です。</param>
    /// <param name="dn">有効小数桁です。0~28</param>
    /// <returns>四捨五入した数値です。</returns>
    public static decimal Round(decimal d, int dn)
    {
        decimal p = Pow(10, dn);
        d = d * p;

        d = Math.Round(d, MidpointRounding.AwayFromZero);
        return (d / p);
    }

    /// <summary>
    /// 累乗を計算します。
    /// </summary>
    /// <param name="x">底(基数)です。</param>
    /// <param name="y">指数です。</param>
    /// <returns>累乗計算した結果</returns>
    public static decimal Pow(decimal x, decimal y)
    {
        try
        {
            decimal r = 1M;
            for (int i = 0; i < y; i++)
            {
                r *= x;
            }
            return r;
        }
        catch (System.Exception)
        {
            throw;
        }
    }
}

テストコード
1
2
3
4
5
6
7
8
9
10

private void button4_Click(object sender, EventArgs e)
{
    decimal d = 1.1234567890123456789012345678M;

    for (int i = 0; i < 29; i++)
    {
        decimal r = MyMath.Round(d, i);
        Console.WriteLine(d + "[有効桁:" + i + "]" + r);
    }
}

出力
1.1234567890123456789012345678[有効桁:0]1
1.1234567890123456789012345678[有効桁:1]1.1
1.1234567890123456789012345678[有効桁:2]1.12
1.1234567890123456789012345678[有効桁:3]1.123
1.1234567890123456789012345678[有効桁:4]1.1235
1.1234567890123456789012345678[有効桁:5]1.12346
1.1234567890123456789012345678[有効桁:6]1.123457
1.1234567890123456789012345678[有効桁:7]1.1234568
1.1234567890123456789012345678[有効桁:8]1.12345679
1.1234567890123456789012345678[有効桁:9]1.123456789
1.1234567890123456789012345678[有効桁:10]1.123456789
1.1234567890123456789012345678[有効桁:11]1.12345678901
1.1234567890123456789012345678[有効桁:12]1.123456789012
1.1234567890123456789012345678[有効桁:13]1.1234567890123
1.1234567890123456789012345678[有効桁:14]1.12345678901235
1.1234567890123456789012345678[有効桁:15]1.123456789012346
1.1234567890123456789012345678[有効桁:16]1.1234567890123457
1.1234567890123456789012345678[有効桁:17]1.12345678901234568
1.1234567890123456789012345678[有効桁:18]1.123456789012345679
1.1234567890123456789012345678[有効桁:19]1.1234567890123456789
1.1234567890123456789012345678[有効桁:20]1.1234567890123456789
1.1234567890123456789012345678[有効桁:21]1.123456789012345678901
1.1234567890123456789012345678[有効桁:22]1.1234567890123456789012
1.1234567890123456789012345678[有効桁:23]1.12345678901234567890123
1.1234567890123456789012345678[有効桁:24]1.123456789012345678901235
1.1234567890123456789012345678[有効桁:25]1.1234567890123456789012346
1.1234567890123456789012345678[有効桁:26]1.12345678901234567890123457
1.1234567890123456789012345678[有効桁:27]1.123456789012345678901234568
1.1234567890123456789012345678[有効桁:28]1.1234567890123456789012345678
      

ユーティリティ




Effective C# 4.0
ビル・ワグナー
¥ 3,780



Copyright (C) 2011 - 2017 猫の気ままなC#日記