可以为十进制的小数到十进制,后面有3个零' s

时间:2015-12-22 04:38:11

标签: c# decimal

如何将可为空的十进制转换为十进制,小数点后面有3个零。

例如:cubed - >十进制? (数据类型) - sql server为此属性提供值5324。在我的viewmodel中我有

decimal cdb

在我的databuilder类中,我将其转换为

cbd=cubed??0.

因此cbd = 5324 但我想要

cbd=5324.000

我怎么能得到这个。?

1 个答案:

答案 0 :(得分:1)

如果我写这段代码:

decimal? cubed = 5324m;
decimal cdb = cubed ?? 0.000m;
Console.WriteLine(cdb);

我将5324写入控制台。

如果我改成它:

decimal? cubed = null;
decimal cdb = cubed ?? 0.000m;
Console.WriteLine(cdb);

我得到0.000。小数“记住”小数点后有多少个零。

我运行这两行:

Console.WriteLine(String.Join(":", decimal.GetBits(5324m).Select(x => x.ToString())));
Console.WriteLine(String.Join(":", decimal.GetBits(5324.000m).Select(x => x.ToString())));

我明白了:

5324:0:0:0
5324000:0:0:196608

因此,要获得返回的值,内部表示具有三个零小数位,您可以执行此操作:

decimal? cubed = 5324m;
decimal cdb = cubed ?? 0m;
int[] bits = decimal.GetBits(cdb);
cdb = new decimal(new [] { bits[0] * 1000, 0, 0, 196608});
Console.WriteLine(cdb);

这给了我:

5324.000

此代码适用于0m4294967m的值。如果您需要它来处理此范围之外的值,则需要对bits值进行更多的工作。