Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#获取数字格式信息_C#_String_Formatting - Fatal编程技术网

C#获取数字格式信息

C#获取数字格式信息,c#,string,formatting,C#,String,Formatting,我想读一个字符串,从字符串中得到一个特定的数字,乘以一个双精度,然后用新的字符串数字替换旧的数字。 乘法后,数字的格式发生变化 示例:原始格式8.08000e+14 乘以,比方说2,返回:1.616E+15 我希望新数字的格式与旧数字的格式完全相同(将是1.61600e+15,例如可以使用String.format完成),但为此,我需要先获得旧数字的格式(此格式并不总是相同)。如何获取此格式信息?以下是一种相当粗糙的方法: 假设您的原始格式是电子符号。您可以找到和e之间的位数,然后使用该数字再次

我想读一个字符串,从字符串中得到一个特定的数字,乘以一个双精度,然后用新的字符串数字替换旧的数字。 乘法后,数字的格式发生变化

示例:原始格式8.08000e+14

乘以,比方说2,返回:1.616E+15


我希望新数字的格式与旧数字的格式完全相同(将是1.61600e+15,例如可以使用String.format完成),但为此,我需要先获得旧数字的格式(此格式并不总是相同)。如何获取此格式信息?

以下是一种相当粗糙的方法:

假设您的原始格式是电子符号。您可以找到
e
之间的位数,然后使用该数字再次转换为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);

它总是用电子记数法吗?你担心格式本身吗(科学记数法和常规十进制)?还是只关心计算的有效数字?@EricSondergard我明白这一点。你怎么知道原来的格式并不总是用电子符号?@MongZhu对不起,我也明白了。