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