【问题标题】:How can I convert decimal? to decimal如何转换十进制?到十进制
【发布时间】:2011-06-19 19:26:17
【问题描述】:

也许这是一个简单的问题,但我正在尝试所有的转换方法!它仍然有错误! 你会帮我吗?

十进制? (可为空的小数)转十进制

【问题讨论】:

    标签: c# .net decimal type-conversion nullable


    【解决方案1】:

    有很多选择...

    decimal? x = ...
    
    decimal a = (decimal)x; // works; throws if x was null
    decimal b = x ?? 123M; // works; defaults to 123M if x was null
    decimal c = x.Value; // works; throws if x was null
    decimal d = x.GetValueOrDefault(); // works; defaults to 0M if x was null
    decimal e = x.GetValueOrDefault(123M); // works; defaults to 123M if x was null
    object o = x; // this is not the ideal usage!
    decimal f = (decimal)o; // works; throws if x was null; boxes otherwise
    

    【讨论】:

    • +1。我更喜欢GetValueOrDefault,因为它不依赖于 C# 语法,因此也可以在 VB.NET 中使用。它也很容易调整,以防类型的默认值不适合您。
    • Convert.ToDecimal() 怎么样; ?我可以将它用于十进制到十进制的转换吗?
    • @NullReference 进行“十进制到十进制”转换意味着什么?有decimal Convert.ToDecimal(decimal),但是字面意思只是返回输入值
    【解决方案2】:

    尝试使用?? 运算符:

    decimal? value=12;
    decimal value2=value??0;
    

    decimal? 为空时,0 是您想要的值。

    【讨论】:

      【解决方案3】:

      你不需要转换一个可以为空的类型来获取它的值。

      您只需利用Nullable<T> 公开的HasValueValue 属性。

      例如:

      Decimal? largeValue = 5830.25M;
      
      if (largeValue.HasValue)
      {
          Console.WriteLine("The value of largeNumber is {0:C}.", largeValue.Value);
      }
      else
      {
          Console.WriteLine("The value of largeNumber is not defined.");
      }
      

      或者,您可以使用 C# 2.0 或更高版本中的 null coalescing operator 作为快捷方式。

      【讨论】:

        【解决方案4】:

        如果decimal?null,这取决于您要做什么,因为decimal 不能是null。如果您想将其默认为 0,您可以使用以下代码(使用 null 合并运算符):

        decimal? nullabledecimal = 12;
        
        decimal myDecimal = nullabledecimal ?? 0;
        

        【讨论】:

          【解决方案5】:

          你可以使用。

          decimal? v = 2;

          十进制 v2 = Convert.ToDecimal(v);

          如果值为空(v),则将其转换为0。

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-05
          • 1970-01-01
          • 1970-01-01
          • 2013-06-13
          • 2015-08-10
          • 1970-01-01
          相关资源
          最近更新 更多