2012-03-16 13 views
0

私は Convert.ToInt32の機能またはInt32.Parseに関する質問があります。Convert.ToInt32は、開始整数としてゼロ(0)を取らない

私がInt32.Parse("06487965")を使用したり、他の機能を使用すると、それはちょうど0を失うようです。 出力は"6487965"になります。

私の質問は:

  1. なぜその正確でしょうか?
  2. どのように私は狂ったハッキン​​グになることなくこれを解決することができますか?
+1

問題は何ですか?最初の0は数字としてカウントされません –

+2

数字に先行ゼロはありません。彼らが1リンゴと01リンゴの違いは何だろう? –

+1

@AshBurlaczenko。 01リンゴと001リンゴはどうですか?それはリンゴだけで動作しますか?どうすれば解決できますか? – gdoron

答えて

0

ToStringintの場合、先頭の0は表示されません。 "00000000"のような書式を渡したいとします。

int value = Int32.Parse("06487965"); 
string stringAgain = value.ToString("000000000"); 
2

この形式では、先頭の0または0が無意味で冗長なためです。

どのようにフォーマットする必要があるかを知っているときは、視覚的な表現のために書式設定の面で役立つことができますが、それ以外の場合は問題になりません。

5

先行ゼロは、純粋に書式設定イディオムです。実際のの数字には意味がなく余分なゼロがありません。

あなたは本当に解決する必要はありませんが、後にゼロをつけて番号を表示する場合は、文字列の書式設定を使用してこれを達成できます。

int myNum = 6487965; 
string formatted = string.Format("{0:00000000}", myNum); 
+0

多分、文字列として格納することから始めなければなりません。先頭の0が彼に関連しているなら、最初は正しくタイプされていないようです。 – squelos

+1

@squelos、私は注文番号や請求書番号などの文字列比較の目的には関係しているとしか思えません。もしそうなら、おそらく正しいかもしれません。もし望んでいなければ、整数に変換する必要は全くありません「次の請求書」番号を見つけることができますが、その後は全く新しい領域に入ります。私は、おそらく、OPは少し精巧になるはずだと思います。 –

+0

はい、彼は確かに詳述する必要があります。それはintでなければならない可能性がありますが、Exceptionnalyは、先頭に0を付けてフォーマットしたいと考えていますが、使用しているデータ型も間違っている可能性があります。 – squelos

3
  1. 大手ゼロはあなたがゼロをリードしていなければならない場合には、数学的に

  2. あなたが最良の方法は、文字列として、あなたの変数を維持することです、整数で先行ゼロを持つことはできません意味がありません。

0

のInt32のような数値型に変換するときに06487965は6487965個の

1

先行ゼロを整数に等しい整数は無意味である - それはあなたがから変換している文字列によって表される実際の数値を気に、です正面についたゼロの数に関係なく同じです。

後でプログラムでInt32を文字列に変換し直すか、ユーザーに出力したい場合は、その時点で必要な先行ゼロの数を取得するために書式設定を行う必要があります。 MSDNの記事"How to: Pad a Number with Leading Zeros"はそれを開始するのに適しています。 、誰もpadingを使用しない

+0

良いものありがとう – Shinji

0

ので、ここにある:

int intValue = Int32.Parse("06487965"); 
string stringAgain = intValue.ToString().PadLeft(9, '0'); 
関連する問題