2016-10-12 2 views
2

文字列を読み込み、文字列から特定の番号を取得し、これをdoubleで掛けて、古い文字列を新しい文字列番号で置き換えたい。 乗算した後、番号の形式が変更さC#get NumberFormatInfo

例:オリジナル形式8.08000e + 14

乗算はによって、返す2を言うことができます:1.616Eは

15は、私は新しい番号にしたいです+ (例えば1.61600e + 15で、これはString.Formatを使って行うことができます)、古い番号の書式を取得する必要があります(この形式は常に同じ)。このフォーマット情報を取得するにはどうすればよいですか?

あなたの元のフォーマットが電子表記であると仮定すると:

+0

は、それはE-表記では常にありますか? –

+0

フォーマット自体が気になりますか(科学的表記法と通常の10進法)または、計算の有効桁数だけに関係がありますか? –

+1

@EricSondergard私はその点を得る。元の形式が常にE表記法ではないことをどのように知っていますか? –

答えて

0

はここでかなりハック的なアプローチです。 .eの間の桁数を見つけることができます。変換の番号を再度電子記法に使用します。ここで

は小さな一例です:

string test = "4.08123000E+14"; 

//string test = "8.08000e+14";   

double test_as_double = Convert.ToDouble(test); 

test_as_double *= 2.0; 

// find all digits between . and e or E 
string old_format = System.Text.RegularExpressions.Regex.Match(test, @".\d+[e|E]").Value; 

// take the amount of digits without the . and e 
int number_of_digits = old_format.Length-2; 

// create the new number-string with the old folmar 
string new_old_Format = test_as_double.ToString("E" + number_of_digits.ToString(), CultureInfo.InvariantCulture);