C#中的这些行
decimal a = 2m;
decimal b = 2.0m;
decimal c = 2.00000000m;
decimal d = 2.000000000000000000000000000m;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
生成以下输出:
2
2.0
2.00000000
2.000000000000000000000000000
所以我可以看到,从文字创建一个十进制变量允许我控制精度。
发布于 2009-07-15 20:37:03
为了更严格地符合ECMA CLI规范,在.NET 1.1中引入了类似于保留尾随零的功能。
在MSDN上有一些关于这方面的信息,例如here。
您可以按如下方式调整精度:
得到b。
发布于 2009-07-15 17:50:05
发布于 2009-07-15 18:38:05
我发现我可以通过乘以或除以一个花哨的1来“篡改”比例。
decimal a = 2m;
decimal c = 2.00000000m;
decimal PreciseOne = 1.000000000000000000000000000000m;
//add maximum trailing zeros to a
decimal x = a * PreciseOne;
//remove all trailing zeros from c
decimal y = c / PreciseOne;
我可以构造一个足够精确的1来根据已知的大小改变比例因子。
decimal scaleFactorBase = 1.0m;
decimal scaleFactor = 1m;
int scaleFactorSize = 3;
for (int i = 0; i < scaleFactorSize; i++)
{
scaleFactor *= scaleFactorBase;
}
decimal z = a * scaleFactor;
https://stackoverflow.com/questions/1132765
复制相似问题