带小数类型的C#百分比计算会导致问题

Sim*_*sen 5 c# math decimal percentage

decimal hundred = 100;
decimal value = 5000;
decimal sum = 1100000;

decimal valuePercentOfSum = value / sum * hundred;        //result = 0.4545454545454545454545454500M
decimal percentOfSum = sum / hundred * valuePercentOfSum; //result = 4999.9999999999999999999999500M
Run Code Online (Sandbox Code Playgroud)

我希望结果是percentOfSum值的原始(5000)

我需要一种方法来做这样的来回计算,我不能做任何舍入.

有帮助吗?

AAA*_*ddd 8

有人必须舍入(无论你喜不喜欢),因为你正在处理非理性数字和/或数字类型,精度有限

如果你使用double它将为你,如果你使用decimal它有更多的精度.但是,你将不得不忍受它留下精确度的事实.

根据您的想法,decimal可能不太方便,但如果您了解两种类型的后果(并且没有免费午餐),您可以相应地进行选择.