限制双精度中的最大字符数

时间:2014-10-10 07:12:57

标签: c# .net vb.net double

是否有一种优雅的方法可以将double转换为字符串,因此它会被舍入以适应最大总长度,但在其他方面类似于默认的中性文化格式?

我不想仅限制小数位数,因为用于符号和指数的字符数可能会改变,或者它可能不是科学记数法。

例如,最多20个字符

-1.23456789012345E-67

应显示为

-1.2345678901235E-67

,而

123应显示为123,而不是1.23E+02

1 个答案:

答案 0 :(得分:0)

正如Sintar所说,G格式说明符应该可以满足你所需要的一切。

double s = 1.31956544564371E+28;
Console.WriteLine("{0:G5}",s);  // will print 1.3196E+28

以下是扩展方法可能会有所帮助:

public static class doubleExtensions
{
    public static string GetDoubleString(this double source,int numOfChars){
        string  temp = "{0:G" + numOfChars + "}";
        return string.Format(temp,source);
    }
}