可为null的十进制到带3个零的十进制';s之后

本文关键字:十进制 之后 3个 null 可为 | 更新日期: 2023-09-27 18:27:38

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

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

decimal cdb

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

cbd=cubed??0.

因此cbd=5324但是我想要

cbd=5324.000

我怎么能得到这个。?

可为null的十进制到带3个零的十进制';s之后

如果我写这个代码:

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