【发布时间】:2016-08-07 13:03:37
【问题描述】:
我正在使用 Visual Studio 2013 在 Windows 7 上维护 C# 桌面应用程序。代码中的某处有以下行,它尝试使用 Decimal(Int32[]) 构造函数创建 0.01 十进制值:
decimal d = new decimal(new int[] { 1, 0, 0, 131072 });
第一个问题是,和下面的有区别吗?
decimal d = 0.01M;
如果没有什么不同,为什么开发者会遇到这样的编码麻烦?
我需要更改此行以创建动态值。比如:
decimal d = (decimal) (1 / Math.Pow(10, digitNumber));
我会以这种方式引起一些不受欢迎的行为吗?
【问题讨论】:
-
我想你想要:decimal[] d = new decimal[] {1,0,0,131072};构造函数“new decimal()”不接受数组作为参数。
-
@jdweng this overload does.
-
@jdweng 否 - 构造函数接受一个长度必须正好为 4 项的数组,并使用它来构造一个 single
decimalobject。 -
@jdweng 那是一个不同的构造函数。采用 4 个
ints 数组的那个将isNegative和scale组合成第 4 个int。
标签: c# .net refactoring decimal