C#中的十进制舍入问题

Moo*_*ght 3 c# decimal rounding

所有,

decimal在C#中有一个设定值.我将这些写入类中的字段,然后将此类序列化为XML数据文件.但是,在尝试将存储为零或0的值四舍五入到四个小数位时,我遇到了问题.我希望0存储为0.0000.这可能用decimal吗?当然,我可以在投射时毫无问题地执行此操作string,这不是问题所在.我已阅读了许多主题,但似乎没有人解决这个问题.

非常感激任何的帮助.我的代码snippit是:

// directCost (dCost).
decimal dCost = Convert.ToDecimal(EpiCostValues[(int)epiCostField.directCost]);
dCost = decimal.Round(dCost, 4, MidpointRounding.AwayFromZero);
episodeCostTmp.dCost = dCost;

// indirectCost (iCost).
decimal iCost = Convert.ToDecimal(EpiCostValues[(int)epiCostField.indirectCost]);
iCost = decimal.Round(iCost, 4, MidpointRounding.AwayFromZero);
episodeCostTmp.iCost = iCost;
Run Code Online (Sandbox Code Playgroud)

但是这不会强制0到0.0000,这对于.xml数据文件所需的格式是个问题.

Bra*_*avo 7

将此行添加到您的代码中

dCost *= 1.0000m;
Run Code Online (Sandbox Code Playgroud)

对于Eg:

// directCost (dCost).
decimal dCost = Convert.ToDecimal(EpiCostValues[(int)epiCostField.directCost]);
dCost *= 1.0000m;
dCost = decimal.Round(dCost, 4, MidpointRounding.AwayFromZero);
episodeCostTmp.dCost = dCost;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)