Back to Top

プログラムの覚書

Category: C#

.NET C#

C# 少数の丸め処理

C#にて、小数点以下の数値を丸める、切り捨て・切り上げ・四捨五入の方法を説明します。

数値がプラスの数とマイナスの数で基本的に処理を分けます。

以下の例はdouble・decimalにて行っています。

 

小数点以下切捨

static public double RoundDown(double val)
{
    if (0.0 < val)
    {
        return Math.Floor(val);
    }
    else
    {
        return Math.Ceiling(val);
    }
}

static public decimal RoundDown(decimal val)
{
    if (0.0m < val)
    {
        return Math.Floor(val);
    }
    else
    {
        return Math.Ceiling(val);
    }
}

 

小数点以下切り上

static public double RoundUp(double val)
{
    if (0.0 < val)
    {
        return Math.Ceiling(val);
    }
    else
    {
        return Math.Floor(val);
    }
}

static public decimal RoundUp(decimal val)
{
    if (0.0m < val)
    {
        return Math.Ceiling(val);
    }
    else
    {
        return Math.Floor(val);
    }
}

 

小数点以下四捨五入

static public double Round(double val)
{
    return Math.Round(val, MidpointRounding.AwayFromZero);
}

static public decimal Round(decimal val)
{
    return Math.Round(val, MidpointRounding.AwayFromZero);
}

 

指定桁位置で切り捨・切り上げ・四捨五入

少数点以下切り捨てではなく、小数点x桁以下切り捨てのサンプルです。

// 指定桁位置で切り捨て
static public double RoundDown(double val, int digit)
{
    double b;

    b = Math.Pow(10.0, digit);

    return ((Omit(val * b) / b));
}

// 指定桁位置で切り捨て
static public decimal RoundDown(decimal val, int digit)
{
    decimal b;

    b = (decimal)Math.Pow(10.0, digit);

    return ((Omit(val * b) / b));
}

// 指定桁位置で切り上げ
static public double RoundUp(double val, int digit)
{
    double b;

    b = Math.Pow(10.0, digit);

    return ((Raise(val * b) / b));
}

// 指定桁位置で切り上げ
static public decimal RoundUp(decimal val, int digit)
{
    decimal b;

    b = (decimal)Math.Pow(10.0, digit);

    return ((Raise(val * b) / b));
}

// 指定桁位置で四捨五入
static public double Round(double val, int digit)
{
    double b;

    b = Math.Pow(10.0, digit);

    return ((Round(val * b) / b));
}

// 指定桁位置で四捨五入
static public decimal Round(decimal val, int digit)
{
    decimal b;

    b = (decimal)Math.Pow(10.0, digit);

    return ((Round(val * b) / b));
}

 

Posted in 数学 | Leave a reply

C# 特定文に含む文字かを判断する

C#にてGUIアプリケーションを作成するときに使用する

TextBox などで入力文字の制限をする場合に使用する。特定文(整数値、実数値、金額、住所)に含まれる文字かを判断する方法を説明します。
 

特定文に含まれる文字かを判断

// 半角数字か判断する
static public bool IsHalfNumeric(char c)
{
    if (c >= '0' && c <= '9')
    {
        return true;
    }
    return false;
}

// 半角整数値か判断する
static public bool IsHalfDigit(char c)
{
    if ((c >= '0' && c <= '9') || c == '-' || c == '+')
    {
        return true;
    }
    return false;
}

// 半角実数値か判断する
static public bool IsHalfReal(char c)
{
    if ((c >= '0' && c <= '9') || c == '-' || c == '+' || c == '.')
    {
        return true;
    }
    return false;
}

// 半角16進数か判断する
static public bool IsHalfHex(char c)
{
    if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'))
    {
        return true;
    }
    return false;
}

// 半角英文字か判断する
static public bool IsHalfAlpha(char c)
{
    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
    {
        return true;
    }
    return false;
}

// 半角英数字か判断する
static public bool IsHalfAlnum(char c)
{
    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'))
    {
        return true;
    }
    return false;
}

// 半角カナ文字か判断する
static public bool IsHalfKana(char c)
{
    if (c >= 'ア' && c <= 'ン')
    {
        return true;
    }
    return false;
}

// 半角表示文字か判断する
static public bool IsHalfDisplay(char c)
{
    if ((c >= ' ' && c <= '~') || (c >= '。' && c <= '゚'))
    {
        return true;
    }
    return false;
}

// 半角日付文字か判断する
static public bool IsHalfDate(char c)
{
    if ((c >= '0' && c <= '9') || c == '/')
    {
        return true;
    }
    return false;
}

// 半角時間文字か判断する
static public bool IsHalfTime(char c)
{
    if ((c >= '0' && c <= '9') || c == ':')
    {
        return true;
    }
    return false;
}

// 半角電話番号文字か判断する
static public bool IsHalfPhone(char c)
{
    if ((c >= '0' && c <= '9') || c == '-')
    {
        return true;
    }
    return false;
}

// 半角郵便番号文字か判断する
static public bool IsHalfPost(char c)
{
    if ((c >= '0' && c <= '9') || c == '-')
    {
        return true;
    }
    return false;
}

// 全角カナ文字か判断する
static public bool IsDblKatakana(char c)
{
    Regex regex = new Regex("^[ァ-ヴ!ー]+$");
    if (!regex.IsMatch(c.ToString()))
    {
        return false;
    }
    return true;
}

// 全角かな文字か判断する
static public bool IsDblHiragana(char c)
{
    Regex regex = new Regex("^[ぁ-ん!ー]+$");
    if (!regex.IsMatch(c.ToString()))
    {
        return false;
    }
    return true;
}

単純なものはif文にて行なえますが、複雑になるとif文ではプログラムが複雑になります。

そこで上記の例では、正規表現にて行っています。

全て正規表現にて行なうことも出来ます。速度など考慮の上ご自分で判断してください。

 

 

Posted in 文字 | Leave a reply