【问题标题】:Limit the maximum number of characters in a double限制 double 中的最大字符数
【发布时间】:2014-10-10 07:12:57
【问题描述】:

是否有一种优雅的方法可以将双精度数转换为字符串,使其四舍五入以适应最大总长度,但在其他方面类似于默认的中性文化格式?

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

例如,最多 20 个字符

-1.23456789012345E-67

应该显示为

-1.2345678901235E-67

同时

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

【问题讨论】:

  • G 格式应该产生最 compact 字符串表示。您可能想要实现自己的格式化程序(作为 double 示例的扩展方法),它将完成您的所有逻辑:转换、检查等。

标签: c# .net vb.net double


【解决方案1】:

正如 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);
    }
}

【讨论】:

  • 这只是控制有效数字的数量,而不是字符。例如。 -1.2345678E-123 变为 -1.2346E-123(12 个字符),但 1234.5678 变为 1234.6(6 个字符)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
相关资源
最近更新 更多