C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

小数点を含む数値かどうか判断したいです

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■92633 / inTopicNo.1)  小数点を含む数値かどうか判断したいです
  
□投稿者/ もりと (1回)-(2019/10/15(Tue) 14:53:29)

分類:[.NET 全般] 

ファイルからデータを取得して、そのデータをデータベースにInsertしたいと思っています。
ファイルから取得したデータは整数、少数を含む数値のいづれかになります。
データを挿入するDBのフィールドは整数型になっています。

やりたい事は取得したデータが整数の場合は特に何もしなく、そのままデータを挿入。
少数を含む数値の場合は、少数を切り捨てて整数化して、データを挿入。
空の場合は、0を挿入。

質問は2つあります。
少数を含む数値はどのように判定できるでしょうか?
少数を含む数値を切り捨てて整数化したいのですが、どのようにすればいいでしょうか?

例)
10 => 10
12.45 => 12
10.00 => 10
空 => 0

以上、宜しくおねがいします!
C#を使っています!
引用返信 編集キー/
■92634 / inTopicNo.2)  Re[1]: 小数点を含む数値かどうか判断したいです
□投稿者/ WebSurfer (1947回)-(2019/10/15(Tue) 15:07:28)
No92633 (もりと さん) に返信
> ファイルからデータを取得して、そのデータをデータベースにInsertしたいと思っています。
> ファイルから取得したデータは整数、少数を含む数値のいづれかになります。

その「ファイル」というのは何ですか? テキストファイルから文字列として "10" とか "12.45" と
いう「データ」を取得してくるのですか?

で、文字列が "10" ならそのまま、"12.45" なら "12" として、Int32.Parse メソッドで Int32 型に
変換できればいいのですか?

違う場合はどこがどう違うか指摘ください。
引用返信 編集キー/
■92635 / inTopicNo.3)  Re[2]: 小数点を含む数値かどうか判断したいです
□投稿者/ ぶなっぷ (213回)-(2019/10/15(Tue) 15:09:27)
2019/10/15(Tue) 15:26:56 編集(投稿者)
話の内容からして、
ファイルから取得したデータは、いったんは文字列として読み込むと思っていいのかな?

であれば、
> 少数を含む数値はどのように判定できるでしょうか?
> 少数を含む数値を切り捨てて整数化したいのですが、どのようにすればいいでしょうか?
小数を含む数値かどうかの判定の必要なさそう。

ファイルから取得データが、
  string strValue;
に読み込まれるとして、
  double doubleValue;
  double.TryParse(strValue, out doubleValue);
  int intValue = (int)doubleValue;
とすれば、全ての要件を満たします。
intValueをデータベースにInsertすればOK。

引用返信 編集キー/
■92636 / inTopicNo.4)  Re[3]: 小数点を含む数値かどうか判断したいです
□投稿者/ もりと (3回)-(2019/10/15(Tue) 15:27:21)
言葉足らずで申し訳ないです!

ファイルというのはテキストファイルです。
各行に整数、小数点が入った数値、空のいづれかが入っています。
なので、変数に入ってくるのは最初は文字列になります。
引用返信 編集キー/
■92637 / inTopicNo.5)  Re[4]: 小数点を含む数値かどうか判断したいです
□投稿者/ もりと (4回)-(2019/10/15(Tue) 15:28:56)
No92636 (もりと さん) に返信
> 小数を含む数値かどうかの判定の必要なさそう。

すいません、でもどのように判断できるか知りたいんです!
引用返信 編集キー/
■92638 / inTopicNo.6)  Re[5]: 小数点を含む数値かどうか判断したいです
□投稿者/ 大谷刑部 (43回)-(2019/10/15(Tue) 16:03:58)
No92637 (もりと さん) に返信
> ■No92636 (もりと さん) に返信
>>小数を含む数値かどうかの判定の必要なさそう。
>
> すいません、でもどのように判断できるか知りたいんです!
回答者は整数と小数ありがともに整数で登録だから単純にintgerの変数にぶち込めばいいでしょと言っているのであって、
それを否定するなら「なぜ?」が普通いるかと思いますが。それが礼儀でしょ。普通。

>>少数を含む数値の場合は、少数を切り捨てて整数化して、データを挿入。
とありますから、厳密には単純に代入じゃなくてTruncateで切り捨てて代入すべきでしょうけど。

ファイルから文字列で読み込んでどうしても、3通りの処理にしたいのなら、
まず数値以外を排除して、単純に小数点が存在するかを判定(IndexOfとかで)すればいいだけ。

ググればすぐ出てくる内容と思いますけど。

https://dobon.net/vb/dotnet/vb2cs/isnumeric.html
https://dobon.net/vb/dotnet/string/stringindexof.html

引用返信 編集キー/
■92639 / inTopicNo.7)  Re[3]: 小数点を含む数値かどうか判断したいです
□投稿者/ 大谷刑部 (45回)-(2019/10/15(Tue) 16:08:00)
> ファイルから取得データが、
> string strValue;
> に読み込まれるとして、
> double doubleValue;
> double.TryParse(strValue, out doubleValue);
> int intValue = (int)doubleValue;
> とすれば、全ての要件を満たします。
> intValueをデータベースにInsertすればOK。

お金の計算に使うなら途中の変数がdoubleじゃなくてdecimalの方がいいです。
その辺はどうなんでしょう?質問者さん。
引用返信 編集キー/
■92640 / inTopicNo.8)  Re[1]: 小数点を含む数値かどうか判断したいです
□投稿者/ 魔界の仮面弁士 (2425回)-(2019/10/15(Tue) 16:48:16)
No92633 (もりと さん) に返信
> 少数を含む数値はどのように判定できるでしょうか?
×:少数
○:小数


No92636 (もりと さん) に返信
> 各行に整数、小数点が入った数値、空のいづれかが入っています。
△:いづれか
○:いずれか


No92637 (もりと さん) に返信
> すいません、でもどのように判断できるか知りたいんです!
すでにぶなっぷさんが具体的な回答を付けてくれているので
蛇足とは思いますが、実験用コードを書いてみました。

https://paiza.io/projects/2ud5ZKmONTosEIHPizQq2w?language=csharp

この処理で都合の悪い点はありますか?
引用返信 編集キー/
■92641 / inTopicNo.9)  Re[4]: 小数点を含む数値かどうか判断したいです
□投稿者/ WebSurfer (1948回)-(2019/10/15(Tue) 16:49:42)
No92636 (もりと さん) に返信

> ファイルというのはテキストファイルです。
> 各行に整数、小数点が入った数値、空のいづれかが入っています。
> なので、変数に入ってくるのは最初は文字列になります。

以下のようにしたいのだと理解しました。理解が違っていたら指摘ください。

(1) テキストファイルから文字列を取得する。
(2) 文字列が、例えば、"10" ならそのまま、"12.45" なら "12" として Int32.Parse メソッド
  で Int32 型の数値に変換。文字列が "" なら Int32 型の 0 に変換
(3) 変換した Int32 型の数値を DB に INSERT する。

質問は、

> 少数を含む数値はどのように判定できるでしょうか?
> 少数を含む数値を切り捨てて整数化したいのですが、どのようにすればいいでしょうか?

とのことですので (2) だけ分かれば良いのですよね。

文字列操作のメソッドが String クラスに多数あるので使えそうなのを探してみてください。

例えば、String.IndexOf メソッド (Char) でピリオド '.' のインデックスを取得して、
String.Remove メソッド (Int32) でピリオド '.' 以降の文字列を削除

String.IsNullOrEmpty メソッドで上の操作で得た文字列が "" か否かを調べ、"" なら
Int32 型の 0 とみなし、"" でなければ Int32.Parse メソッドで Int32 型の数値に変換
する

・・・というのが質問の答えの候補の一つになるかと思います。ご自分でも管変えてみて
ください。

上記には数値として不正な文字列があった場合の処理は考えてませんので注意してください。
引用返信 編集キー/
■92642 / inTopicNo.10)  Re[4]: 小数点を含む数値かどうか判断したいです
□投稿者/ 蝦プリ男 (1回)-(2019/10/16(Wed) 11:19:16)
> 少数を含む数値はどのように判定できるでしょうか?

この質問の意図は、判定対象に数値ではない文字も含まれるということでしょうか?
(数値前提なら、小数点変換の前後の差異で判断できるため)
引用返信 編集キー/
■92643 / inTopicNo.11)  Re[5]: 小数点を含む数値かどうか判断したいです
□投稿者/ shu (1198回)-(2019/10/16(Wed) 11:23:28)
No92637 (もりと さん) に返信
> ■No92636 (もりと さん) に返信
>>小数を含む数値かどうかの判定の必要なさそう。
>
> すいません、でもどのように判断できるか知りたいんです!
コンピュータの処理として考える前に、自分ならどう判断して
小数を含む数値かどうかの判定をするのか考えてみて下さい。
それをプログラムで行えばよいと思います。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ