C# 四舍五入至小数点后2位,但保留C中的小数点后4位#
我想将一个数字四舍五入到小数点后2位,但同时保留后面的2个零,例如425.1382到425.1400 我试过下面的例子,但似乎不起作用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
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);