C#.NETのサンプルコードを掲載しています。
      
指定した小数桁で切り上げする。
有効桁数を指定した切り上げが.net Frameworkになかったので作ってみました。
テストコード(ライブラリ)
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

public class MyMath
{
    /// <summary>
    /// 小数を切り上げします。
    /// </summary>
    /// <param name="d">小数です。</param>
    /// <param name="dn">有効小数桁です。0~28</param>
    /// <returns>切り上げした数値です。</returns>
    public static decimal Ceiling(decimal d, int dn)
    {
        decimal p = Pow(10, dn);
        d = d * p;

        d = Math.Ceiling(d);

        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

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

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

出力
1.0123456789012345678901234567[有効桁:0]2
1.0123456789012345678901234567[有効桁:1]1.1
1.0123456789012345678901234567[有効桁:2]1.02
1.0123456789012345678901234567[有効桁:3]1.013
1.0123456789012345678901234567[有効桁:4]1.0124
1.0123456789012345678901234567[有効桁:5]1.01235
1.0123456789012345678901234567[有効桁:6]1.012346
1.0123456789012345678901234567[有効桁:7]1.0123457
1.0123456789012345678901234567[有効桁:8]1.01234568
1.0123456789012345678901234567[有効桁:9]1.012345679
1.0123456789012345678901234567[有効桁:10]1.012345679
1.0123456789012345678901234567[有効桁:11]1.01234567891
1.0123456789012345678901234567[有効桁:12]1.012345678902
1.0123456789012345678901234567[有効桁:13]1.0123456789013
1.0123456789012345678901234567[有効桁:14]1.01234567890124
1.0123456789012345678901234567[有効桁:15]1.012345678901235
1.0123456789012345678901234567[有効桁:16]1.0123456789012346
1.0123456789012345678901234567[有効桁:17]1.01234567890123457
1.0123456789012345678901234567[有効桁:18]1.012345678901234568
1.0123456789012345678901234567[有効桁:19]1.0123456789012345679
1.0123456789012345678901234567[有効桁:20]1.0123456789012345679
1.0123456789012345678901234567[有効桁:21]1.012345678901234567891
1.0123456789012345678901234567[有効桁:22]1.0123456789012345678902
1.0123456789012345678901234567[有効桁:23]1.01234567890123456789013
1.0123456789012345678901234567[有効桁:24]1.012345678901234567890124
1.0123456789012345678901234567[有効桁:25]1.0123456789012345678901235
1.0123456789012345678901234567[有効桁:26]1.01234567890123456789012346
1.0123456789012345678901234567[有効桁:27]1.012345678901234567890123457
1.0123456789012345678901234567[有効桁:28]1.0123456789012345678901234567
      

ユーティリティ






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