teratail header banner
teratail header banner
質問するログイン新規登録

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

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

新規登録して質問してみよう
ただいま回答率
85.30%
C#

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

Q&A

1回答

921閲覧

C#における値の表示に関して

migio

総合スコア49

C#

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

0グッド

0クリップ

投稿2022/07/23 11:41

0

0

環境:VisualStudioのFormアプリ.NET6.0

C#.NETで電卓のFormアプリを制作しています。

画面に表示される数字を”111,222,333,”のように3桁毎に区切った表示をさせたく思い、
以下のように実装したのですが上手くいきません。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 電卓アプリの作成において3桁毎に区切った表示を行いたい
    例)111,333,444,000

該当のソースコード

C#

1 // 「0」~「9」キー押下時 2 private void ButtonNumber_Click(object sender, EventArgs e)// 数字の番号を押した時 3 { 4 5 if (counter == 0) 6 { // 数字が16桁を越えたら以下を表示 7 labelResult.Text = "9,999,999,999,999,999"; 8 return; 9 10 } 11 12 // 計算結果をクリア 13 if (buttonEqualClicked == true) 14 { 15 labelResult.Text = ""; 16 buttonEqualClicked = false; 17 } 18 19 // 数値の入力 後方への追加 20 String text = labelResult.Text + ((Button)sender).Text; 21 22 // String型の変数textをdouble型の変数Nに変換 23 double N = Convert.ToDouble(text); 24 25 // double型の変数NをString型の変数text2に変換 最初の0を削除 26 String text2 = N.ToString(); 27 28 // 0を削除した上で数値をlabelResultに入力 29 labelResult.Text = text2; //  30 31 counter = counter - 1; 32 33 }

試したこと

/ / 0を削除した上で数値をlabelResultに入力 labelResult.Text = String.Format("{0:#,0}" ,text2); //左のようにコードを書きましたが上手く表示されませんでした。 

上記の問題に関して、対応策をご教示いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

migio

2022/07/24 01:11

KOZ6.0さま 度々ご回答いただきありがとうございます。 非常に細かく書いてくださり、有難く拝読させていただいたのですが、 条件分岐以前に表記が上手くいかず、今困っているという次第です。 提示いただいた ”base.Text = decimalValue.ToString("#,##0");” と同じような形で " labelResult.Text = String.Format("{0:#,0}" ,N);" と記載したのですが、ラベルに上手く表示がされません。 もしよろしければご教示願えませんでしょうか。
KOZ6.0

2022/07/24 01:28

N には何が入っていて、どのように表示されるのでしょうか?
migio

2022/07/24 01:39

KOZ6.0さま 失礼いたしました。 Nにはラベルに表示される数字が入っています。 表示は"99999999999999"のように","のない形で表示されてしまいます。 コードは以下になります。 // 数値の入力 後方への追加 String text = labelResult.Text + ((Button)sender).Text; // String型の変数textをdouble型の変数Nに変換 double N = Convert.ToDouble(text);
KOZ6.0

2022/07/24 01:49

labelResult.Text = String.Format("{0:#,0}" ,N); は問題ないはずです。 実行した後で、labelResult.Text に何が入っているかを確認してください。 また、提示されたコード以外のところで書き換えられていないか確認してください。
migio

2022/07/24 04:10

KOZ6.0さま ご教示いただきありがとうございます。 いただいた情報をもとに確認させていただきます。
KOZ6.0

2022/07/24 07:54

小数点不要なんでしたっけ? このように安易に編集しちゃうと、0.01 など、小数部にゼロが先行するものが入力できなくなってしまうのは前の質問の回答に書いた通りなのですが・・・ 状態遷移表も書いてないみたいですし、あとはご自由に。
guest

回答1

0

text2 ってのはstringですね。
それではダメなので、そいつをintに変換してString.Formatに与えましょう
って、Nをそのまま与えてみては

投稿2022/07/23 12:18

編集2022/07/23 12:20
y_waiwai

総合スコア88173

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

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

migio

2022/07/24 00:47

y_waiwaiさま ご教示いただきありがとうございます。 NをそのままString.Formatに与え、" labelResult.Text = String.Format("{0:#,0}" ,N);"とコードを書き改めたのですが、ラベルの表示は変わらずでした。 この場合、どの点が誤りになるのでしょうか。 ご教示いただけますと幸いです。
y_waiwai

2022/07/24 03:45

変わらず、とはどうなるんでしょう
migio

2022/07/24 04:08

y_waiwaiさま 失礼いたしました。 表記が”999,999,999,999”とならずに"999999999999"となってしまっている状況です。
Manabu

2022/07/27 15:16

for文で追加してはいかがでしょう for (int i = 0; i < string1.Length; ++i) string2 += i % 3 is 0 ? a[i] + "," : a[i];
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問