如何将可为空的十进制转换为十进制,小数点后面有3个零。
例如:cubed - >十进制? (数据类型) - sql server为此属性提供值5324。在我的viewmodel中我有
decimal cdb
在我的databuilder类中,我将其转换为
cbd=cubed??0.
因此cbd = 5324 但我想要
cbd=5324.000
我怎么能得到这个。?
答案 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
此代码适用于0m
到4294967m
的值。如果您需要它来处理此范围之外的值,则需要对bits
值进行更多的工作。