2017-04-10 20 views

答えて

3

:そのコードを試してみてください

double value = 1234567890000; 
Console.WriteLine(value.ToString("0.####E+0")); 
// 1.2346E+12 
+0

なぜ「+ 0」部分は正確に機能しますか?コンパイラーはそこに指数を挿入すべきであることをどのように知っていますか? – MetaColon

+1

@MetaColonコンパイラはそのことを知らないので、 'ToString'の実装はそうです。そして、それはそれが[特定のフォーマット指定子](https://msdn.microsoft.com/en-us/library/0c899ak8(v = vs.110).aspx#SpecifierExponent)の仕様の一部なので、それが分かっています。 – Kyle

0

".ToString(" E4 ") 'は、「出力」という文字列にいつでも格納できます。次に、 "出力"の "+"文字を読むまで、 "出力"文字を文字で印刷します。次の文字が "0"の場合は印刷しないでください。 "0"の文字に等しくない文字が来るまで "0"をチェックしてから、最後の文字を印刷してください。

あなたが最小桁数をとる E指標とカスタム書式文字列を使用することができます
0

 var number = 1234567890000; 
     var exponential = number.ToString("E4"); 
     var splitted = exponential.Split('+'); 
     var result = splitted.Length == 2 ? $"{splitted[0]}+{Convert.ToInt32(splitted[1])}" : exponential; 

それは数をとり、指数を評価先頭のゼロをすべて削除します。

これは、+がある場合はそれを分割することによって行われ、そうでない場合は必要ではなく、先行ゼロはありません)、ゼロを取り除かなければならない文字列を数値に変換します。数字が先行ゼロで格納されていないので、それを文字列に変換すると先行ゼロが削除されます。

E+0が最後に書き込まれないようにするには、変換された文字列が0であるかどうかをチェックし、最後の文字がない場合は分割された文字列の最初の部分を使用します。

関連する問題