【问题标题】:c# decimal toString() conversion with comma(,)c#十进制toString()用逗号(,)转换
【发布时间】:2015-06-17 10:38:08
【问题描述】:

c#decimal.toString()转换问题

示例:我有一个十进制值(.1) 当我使用 toString() 将十进制转换为字符串时,它返回 (0,10)。它返回 ,(COMMA) 而不是 .(DOT)。

【问题讨论】:

标签: c# type-conversion tostring


【解决方案1】:

我相信这与您的操作系统设置的文化/地区有关。您可以通过在 .ToString() 方法中添加格式重载来修复/更改解析字符串的方式。

例如

decimalValue.ToString(CultureInfo.InvariantCulture);

【讨论】:

  • @sivaprakash 请随意勾选我的答案是否正确 :)
  • 将答案标记为正确需要 15reputation。我只有 7 个
  • 嘿,@sivaprakash 只是在提醒您,您有足够的声誉可以将答案勾选为正确
【解决方案2】:

您必须定义格式,这取决于您的本地设置或 定义格式,使用类似这样的东西

decimal.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));

干杯

【讨论】:

    【解决方案3】:

    要发生这种情况,线程的当前文化必须是使用逗号而不是点分隔符的文化。

    您可以在每个 ToString 的基础上使用采用文化的 ToString 的重载来更改此设置:

    var withDot = myVal.ToString(CultureInfo.InvariantCulture);
    

    或者,您可以通过在对ToString() 执行任何调用之前设置线程的文化来更改整个线程:

    var ci = CultureInfo.InvariantCulture;
    Thread.CurrentThread.CurrentCulture = ci;
    Thread.CurrentThread.CurrentUICulture = ci;
    
    var first = myVal.ToString();
    var second = anotherVal.ToString();
    

    【讨论】:

      【解决方案4】:

      逗号(,)

      试试这个:

      decimalValue.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("tr-tr"))
      

      【讨论】:

        【解决方案5】:

        那么您当前的cultureNumberDecimalSeparator, 而不是.

        如果不需要,您可以使用 CultureInfo.InvariantCulture 强制添加点:

        decimal num = 0.1m;
        string numWithDotAsSeparator = num.ToString(CultureInfo.InvariantCulture);
        

        NumberFormatInfo.InvariantInfo

        string numWithDotAsSeparator = num.ToString(NumberFormatInfo.InvariantInfo)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-02
          • 1970-01-01
          • 2019-07-28
          • 2014-03-19
          • 2015-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多