C# 四舍五入至小数点后2位,但保留C中的小数点后4位#

C# 四舍五入至小数点后2位,但保留C中的小数点后4位#,c#,decimal,rounding,C#,Decimal,Rounding,我想将一个数字四舍五入到小数点后2位,但同时保留后面的2个零,例如425.1382到425.1400 我试过下面的例子,但似乎不起作用 var amount = Math.Round((value * rate), 4); profit = Decimal.Parse(amount.ToString("0.####")); 或 当您转换为数字类型时,您将放弃所有不必要的数字。显示前需要将十进制数转换为字符串。var\u profitAmount=Math.Round((saleMarginVa

我想将一个数字四舍五入到小数点后2位,但同时保留后面的2个零,例如425.1382到425.1400 我试过下面的例子,但似乎不起作用

var amount = Math.Round((value * rate), 4);
profit = Decimal.Parse(amount.ToString("0.####"));


当您转换为数字类型时,您将放弃所有不必要的数字。显示前需要将十进制数转换为字符串。

var\u profitAmount=Math.Round((saleMarginValue*exchangeRate),4);
_invoicingCurrencyProfitAmount=Decimal.Parse(profitAmount.ToString().PadRight(2,'0'))

u invoicingCurrencyProfitAmount=Decimal.Parse(profitAmount.ToString(“0.#########”)行正在返回一个小数。Decimal确实保留了所有的零,问题是100%在哪里打印值。 如果您试图在
控制台中编写此代码

 Console.Writeline("{0:F4}", _invoicingCurrencyProfitAmount);

其中,
{0:F4}
表示“格式为定点”,点后有四个数字。当然,您可以通过使用
string.Format

将其解析为十进制,在任何地方都可以使用它。当您将其解析为数字结构时,这些零将消失。我不确定你期望发生什么。4.00和4是相同的值。将数字四舍五入到小数点后两位。如果以后需要额外的零,请将其格式化为字符串。为什么?尾随的零对计算没有影响。只有将数字格式化为字符串时,小数位数才有任何意义,即使如此,它还是由格式化函数控制,而不是numberIt真的不重要。你怎么比较?因为这是真的:
decimal.Parse(“1.0000”)==decimal.Parse(“1”)
@Antirip哪个数据库?你是如何比较价值观的?即使数据库存储4或6位小数的数值,将该值加载到
十进制
变量也会返回与当前值相等的数值calculating@Antirip为什么?你是如何测试的?相等不受尾随零的影响
123.47m==123.4700m
返回true,即使第二个值是从数据库加载的。请发布失败的代码,以便我们重现问题。
var d = 425.1382.ToString("0.##") + "00"; // "425.1400"
 Console.Writeline("{0:F4}", _invoicingCurrencyProfitAmount);