【C#】小数点を消す

スポンサーリンク

今回は、小数点を消す方法について考えてみる
方法としては、3種類紹介する。好きな方法を使ってみよう!

やりたい事としては、小数点を含めた数値を整数として扱いたい

方法1:小数点を置換する

小数点のある数字なので、型としては Double型 or Single型 or Decimal型 のいずれかだと考えているが、一旦この数字を文字列に変換する。
文字列から、小数点を置換(Replace)を使って、消す

double tmp = 12.345;        //数値を定義

//文字に変換して、小数点を置換
string moji = tmp.ToString();
moji = moji.Replace(".", "");

//型を戻し、表示
int answer = int.Parse(moji);
Console.WriteLine(answer);

この方法では、シンプルに目的である「小数点を含めた数値を整数にする」を達成しています。
ただ、他の情報を欲しい場合に適しない

方法2:小数点で分割する

同様に文字列に変換し、その文字列を分割(Split)する事
この方法では、整数部分と小数部分の数値の情報も処理の過程として取得できる。

double tmp = 12.345;        //数値を定義

//文字に変換して、小数点を分割
string moji = tmp.ToString();
string[] mojis = moji.Split('.');

//型を戻し表示([0]整数部 / [1]小数部)
int answer = int.Parse(mojis[0] + mojis[1]);
Console.WriteLine(answer);

この方法では、
小数点で分割する事で、
整数部分小数部分に情報を分割し、
最後に文字結合する事で
目的である「小数点を含めた数値を整数にする」を達成しています。

方法3:10nをする

文字列に変換し、小数の桁数を求める。
小数の桁数を求めれば、10nすれば、小数点を含めた数値を整数にすることが可能。
先ほどの小数部分を求めてという方法でもいいが、面白みに欠けるので手段を変える

double tmp = 12.345;        //数値を定義

//文字に変換して、小数点の位置を取得
string moji = tmp.ToString();
int pointIndx = moji.IndexOf('.');

//小数点以降の文字数を取得する
int len = moji.Substring(pointIndx + 1).Length;

//10のlen乗した数値をかける。
int answer = (int)(tmp * Math.Pow(10,len));
Console.WriteLine(answer);

ちょっと数学的な考えよりのコードになっている。
小数部分が何桁あるかを取得することが出来る。
小数の桁数から10のn乗した数値をかければ
目的である「小数点を含めた数値を整数にする」を達成しています。

まとめ

今回は、【小数点を含めた数値を整数にする】方法についての手法を紹介しました。
どちらも共通して言えることは、一旦文字列に変換する必要があるという事です。
文字列にしてからどのように考えるかである。
そして、どの方法をとるかで、
処理の過程で取得できる情報が変わってきます。
状況に応じて使い分けてもいいのかもしれません。

最後に
数値のままで考える方法については、思いつきませんでした。。。
他にも方法があれば教えていただければ嬉しいです。

コメント

タイトルとURLをコピーしました