C# 可为空的十进制到十进制,带3个零';追求
如何将可为空的十进制转换为小数点后有3个零的十进制 例:立方-->十进制?(数据类型)--sql server为此属性提供值5324。在我的viewmodel中,我有C# 可为空的十进制到十进制,带3个零';追求,c#,decimal,C#,Decimal,如何将可为空的十进制转换为小数点后有3个零的十进制 例:立方-->十进制?(数据类型)--sql server为此属性提供值5324。在我的viewmodel中,我有 decimal cdb 在我的databuilder类中,我将此转换为 cbd=cubed??0. 因此,cbd=5324 但是我想要 cbd=5324.000 我怎样才能得到这个呢?如果我写这个代码: decimal? cubed = 5324m; decimal cdb = cubed ?? 0.000m; Consol
decimal cdb
在我的databuilder类中,我将此转换为
cbd=cubed??0.
因此,cbd=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
。小数“记住”小数点后有多少个零
我运行以下两行:
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
的值。如果您需要它来处理超出此范围的值,则需要对位
值做更多的工作。ToString(“0.000”)
?@SamiKuhmonen-我认为问题更多地与十进制
的内部工作有关,而不仅仅是能够调用.ToString(…)
@Enigmativity因为除了表示层上有多少个小数点零之外,在任何其他地方都不重要,所以不清楚。@SamiKuhmonen-我理解你的意思,但这就是OP明确提出的问题。