可空十进制到十进制后有 3 个零

Nullable decimal to decimal with 3 zero's after

如何将可为空的小数转换为小数点后有 3 个零的小数。

例如:立方 --> 十进制? (数据类型)-- sql 服务器为此 属性 提供值 5324。在我的视图模型中,我有

decimal cdb

在我的数据生成器中 class 我正在将其转换为

cbd=cubed??0.

因此生物多样性公约=5324 但我想要

cbd=5324.000

我怎样才能得到这个?

如果我写这段代码:

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。小数 "remember" 小数点后有多少个零。

我运行这两行:

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 值进行更多工作。