質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
char

charは文字データ型を指します。一文字分の文字コードの格納を想定としている型です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

356閲覧

c# 数字の大小条件での小数点単体の扱い

owtori

総合スコア10

char

charは文字データ型を指します。一文字分の文字コードの格納を想定としている型です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/08/11 11:50

初心者です。

前提・実現したいこと

c#で以下の条件を課したとき、意図していない条件の数字あるいは文字が混入しないか確認したいと考えています。

以下capの中身として、数字のみで9以下の正の整数値としたいという条件にしたいです。

該当のソースコード

char cap
if (cap >= '0' && cap <= '9')

とした場合、ピリオド "."(小数点単体)は上記条件に含まれるのでしょうか?
またアルファベットの"e"は入ってしまうのでしょうか?

数字の0,1,2,3,4,5,6,7,8,9
以外で条件に合致する可能性のものが他にあればぜひ教えてください。
またその除外の仕方も教えてください。

以上お手数ですが、どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/11 11:56

聞く前に実際に自分でやって確かめるということはしたのですか?
Zuishin

2020/08/11 11:57

多分この方法を解決するより、この方法を使う目的の方を解決しようとしたほうがいいと思います。
owtori

2020/08/11 11:58

確認したのですが、どうやら小数点が入ってしまうようでした(「0.0」と換算されているのか?)。ただ、確証を得られる検証方法がわからなかったため質問させていただいています。
owtori

2020/08/11 12:00

「e」の部分については未確認ですが、実装自体もまだできておらず、小数点の問題もすでに見つかっていたため、先に質問し、他の問題も発生しないか、またするようであればどのように回避できるのか教えて頂ければと思い質問した次第です。
退会済みユーザー

退会済みユーザー

2020/08/11 12:00

> 確認したのですが、どうやら小数点が入ってしまうようでした どうやって確認したのか、ここに書いてないことは知り得ない第三者が読んで、誤解の余地なく分かるように書いてください。
Zuishin

2020/08/11 12:01

他の問題が発生しないかどうか、これだけの情報ではわからないので言っています。
Zuishin

2020/08/11 12:03

質問に端的に答えるなら、数字以外で合致するものはありません、となります。他に問題があるからこそこの質問をしたんでしょう?
owtori

2020/08/11 12:03

他にいくつか設定したelse ifの中のいずれにも入らなかったため、上記に入ってしまっているのではないかと推測しています。確証が得られる検証方法は未実施です。
退会済みユーザー

退会済みユーザー

2020/08/11 12:05

結局実際の検証は何もやってなくて想像の世界の話ですか?
owtori

2020/08/11 12:07

「検証」は未実施です。
owtori

2020/08/11 12:08

初心者の為、検証方法がわからず、質問させて頂いています。
Zuishin

2020/08/11 12:08

ああ、会話のできない人か。
owtori

2020/08/11 12:08

初心者の為、初心者マークをつけさせて頂いています。
退会済みユーザー

退会済みユーザー

2020/08/11 12:10

初心者マークは何でも許されるというような免罪符ではありませんよ。
Zuishin

2020/08/11 12:11

初心者かどうかは関係ありません。会話ができるかどうかだけです。
Zuishin

2020/08/11 12:13

初心者の中学生に十分理解できる範囲で言っています。難しい言い方をしようと思えばいくらでもできますが、初心者相手にそのようなことはしません。
owtori

2020/08/11 12:14

2名同時にコメントをいただいています。 これまでの回答は>SurferOnWww様に対してです。
Zuishin

2020/08/11 12:15

だから会話ができない人と言っています。
Zuishin

2020/08/11 12:17

初心者かどうかは無関係です。
退会済みユーザー

退会済みユーザー

2020/08/11 12:20

回答になってないですよ。 > 確認したのですが、どうやら小数点が入ってしまうようでした と言うからには何かをした結果それを確認した(そう思っただけ?)のですよね。その何かを、ここに書いてないことは知り得ない第三者が読んで、誤解の余地なく分かるように書いてくださいと言ったのですけど??????
owtori

2020/08/11 12:37

ttps://www.youtube.com/watch?v=TCkDQwMhTtk という動画を見て実際に作っている最中に上記が出てきたので、質問をさせて頂きました。 あなたには「神経症と人間の成長」という本がおすすめです。
Zuishin

2020/08/11 12:39

あなたにとってその本がよかったからと言って、むやみに人に勧めるものではありません。
owtori

2020/08/11 12:44

Zuishinさんは面白い人ですね。動画をご覧になって何かわかることがあれば再度ご連絡頂ければ幸いです。
Zuishin

2020/08/11 12:45

見るわけがないでしょう。あなたと同じ病気ではないので不要です。
退会済みユーザー

退会済みユーザー

2020/08/11 12:52

ネットの世界だと取りあえずは相手にしてもらえて良いね。でも、これであなたは立派に私の BL 入り。おめでとう。
owtori

2020/08/11 12:54

Zuishin様は病気だったのですね。合点がいきました。 動画は計算機作成のコードを示したものです。
Zuishin

2020/08/11 13:04

あなたが作らなくても大丈夫です。既製品を使ってください。そのほうが正確に計算できます。
guest

回答1

0

ベストアンサー

if (cap >= '0' && cap <= '9')

これは別に内容が数値であるかどうかを見ているわけではありません。
純粋に、capという変数の中にある値(整数値)が、
'0'という数値以上であり、かつ、'9'という数値以下であり場合、
というif文になります。

'0'という数値とは何か?というと、
コンピュータは文字というものを数値として扱っている事を理解する必要があります。
いわゆる文字コードというもので、文字ごとに一文字ずつ、どの文字は何番というふうに数値が割り振られています。
C#のchar型はUTF-16という文字コードが使われており、
'0'には、48が、'9'には57が割り当てられています。
つまりは、
if (cap >= '0' && cap <= '9')
これは、
if (cap >= 48 && cap <= 57)
と同じになります。
これであれば、ただの数値の比較ですので簡単だと思います。

実際の数値が何になるか?またその間に何があるかは、文字コードによって異なる可能性があります。
上述のようなUTF-16であれば、48~57番まで(16進数表記では0030-0039)をコード表で確認すると、
0123456789の各文字となります。

こんな風に中身の動きから考えてゆくとよいかと思います。

投稿2020/08/11 12:07

編集2020/08/11 12:45
amiya

総合スコア1218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

owtori

2020/08/11 12:19

ありがとうございます。アスキーコード表と呼ぶのですね。確認してきました。 「.」が混入しているように思われたのですが、他の可能性を検討してみます。
owtori

2020/08/11 12:21

ありがとうございます。アスキーコード表と呼ぶのですね。確認してきました。 丁寧にお答えくださりありがとうございました。
owtori

2020/08/11 12:22

誤って2回送信してしまいました。失礼いたしました。
Zuishin

2020/08/11 12:29 編集

> 実際の数値が何になるか?またその間に何があるかは、文字コードによって異なる可能性があります。 char は UTF-16 です。数字に限れば ASCII コード表でも大小は確認できますが、ASCII コードではありません。ASCII コードには含まれていない文字も比較できます。
amiya

2020/08/11 12:45

ありがとうございます。訂正しました。(合ってるかな^^;)
owtori

2020/08/11 12:57

ありがとうございます。
owtori

2020/08/13 06:35

追伸 お答え下さった内容を元に再度見直した所、式に見落としがあり、別部分の影響で小数点が呼ばれていることがわかりました。動画を見ながら書き写したものを、再度編集したりしている間に抜け落ちてしまったようです。お手数をおかけしました。
Zuishin

2020/08/13 06:47

だから言ったろ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問