C#将科学记数法中的数字从E + ###减少到E + ##

时间:2017-04-10 21:30:46

标签: c#

使用.ToString(" E4")打印一个类似1.2345E + 012的数字。

如何在指数部分打印少一个数字。换句话说,打印1.2345E + 12.

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用带有E指标的自定义格式字符串,该字符串采用最小位数:

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

答案 1 :(得分:0)

您始终可以将“.ToString(”E4“)'存储在名为”output“的字符串中。然后逐个字符地打印“输出”,直到您在“输出”中读取“+”字符。如果它是“0”,请不要打印下一个字符,一直检查“0”,直到达到不等于(!=)“0”字符的内容,然后打印最后一个字符。

答案 2 :(得分: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,如果是,请使用不带最后一个字符的分割字符串的第一部分。