【问题标题】:Format a number with X decimal places and InvariantCulture?使用 X 小数位和 InvariantCulture 格式化数字?
【发布时间】:2011-04-27 08:33:21
【问题描述】:

我想使用ToString(CultureInfo.InvariantCulture) 格式化一个数字,也可以使用5 个小数位,这可以使用ToString("N5") 来完成。我怎样才能同时做到这两点?

【问题讨论】:

    标签: c# number-formatting


    【解决方案1】:

    使用overload which takes both a format and a culture怎么样:

    decimal m = 123.4567890123m;
    string x = m.ToString("N5", CultureInfo.InvariantCulture);
    

    (如果你正在使用 decimal,显然用 double 替换;有 an equivalent overload。)

    【讨论】:

    • 啊,是的,没有看到树木的树林:D 谢谢
    • 小数点前3位怎么办?喜欢 100.123456 还是 70.1234?有没有办法在不编写自定义代码的情况下获得正确的小数位数?我可以有 11 个字符,包括分隔符。我得到的数字是 13 个字符。
    • @grady:我不清楚问题是什么。 100.123456 将被格式化为 100.12345。要获得 11 个字符,您必须在小数点分隔符前有 5 位数字,因此您应该可以达到 99999.99999。
    • @grady:您应该更新您的问题,使其提及 11 个字符的限制。但是您必须具有该功能的自定义代码。一般情况下,代码必须在 Nx 和 Ex 之间进行选择,同时考虑符号、小数点前的数字和小数点后的数字。
    【解决方案2】:

    如果您的 Decimal not Double:

    string.Format(CultureInfo.InvariantCulture, "{0:f5}", m)
    

    因为 Decimal.ToString() 没有这些重载

    【讨论】:

      猜你喜欢
      • 2017-02-18
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      相关资源
      最近更新 更多