C#get NumberFormatInfo

时间:2016-10-12 22:28:48

标签: c# string formatting

我想读取一个字符串,从字符串中获取一个特定的数字,将其乘以一个double,并用新的字符串数字替换旧的字符串。 乘法后,数字格式改变

示例:原始格式8.08000e + 14

乘法,假设两个,返回:1.616E + 15

我希望新号码具有旧号码的格式(可以是1.61600e + 15,例如可以使用String.Format完成),但为此,我需要获取旧格式数字第一(这种格式并不总是相同)。我怎样才能获得这种格式信息?

1 个答案:

答案 0 :(得分: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);