Back to Top

プログラムの覚書

C# テキストファイル読み込み・書き込み

C#にてテキストファイルの読み書きには、幾つかの方法があります。

以下にテキストファイルの読み込み・書き込み例を記載します。

テキストファイルを一括で文字列として読み込む

string inFilePath = @"C:\work\myfile.txt";
string str = System.IO.File.ReadAllText(inFilePath, System.Text.Encoding.Default);

 

文字列をテキストファイルに書き込む

string outFilePath = @"C:\work\myfile2.txt";
System.IO.File.WriteAllText(outFilePath, str, System.Text.Encoding.Default);

 

テキストファイルを改行で分割して文字列配列に読み込む

string inFilePath = @"C:\work\myfile.txt";
string[] lines = System.IO.File.ReadAllLines(inFilePath, System.Text.Encoding.Default);

 

文字列配列をテキストファイルに書き込む

string outFilePath = @"C:\work\myfile2.txt";
System.IO.File.WriteAllLines(outFilePath, lines, System.Text.Encoding.Default);

 

StreamReaderでテキストファイルを全て読み込む

string inFilePath = @"C:\work\myfile.txt";

System.IO.StreamReader sr = new System.IO.StreamReader(inFilePath, System.Text.Encoding.Default);
string str = sr.ReadToEnd();
sr.Close();

 

StreamReaderでテキストファイルを1行ずつ読み込む

string inFilePath = @"C:\work\myfile.txt";

System.IO.StreamReader sr = new System.IO.StreamReader(inFilePath, System.Text.Encoding.Default);
string str = "";
while (sr.Peek() >= 0)
{
    string s = sr.ReadLine();
    str = str + s + System.Environment.NewLine;
}
sr.Close();

 

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