![[Asp.Net]C#保留小数位数的方法集锦](http://pic.xiahunao.cn/yaotu/[Asp.Net]C#保留小数位数的方法集锦)
摘要本文汇总了 C# 中多种保留小数位数的方法包括 decimal.Round、Math.Round、ToString(f2)、String.Format、ToString(#0.00) 以及 NumberFormatInfo 等并对比了它们是否四舍五入及适用场景。同时介绍了在 C# 中显示保留小数位数及百分号的解决方法帮助开发者根据实际需求选择合适的方式。C#保留小数位数的方法集锦2008-07-19 22:07方法对比一览方法代码示例是否四舍五入适用场景decimal.Rounddecimal.Round(decimal.Parse(0.55555), 2)是对 decimal 类型进行精确的四舍五入适合金融、金额等需要高精度计算的场景Math.RoundMath.Round(0.55555, 2)是对 double 类型进行四舍五入适合一般数值计算场景ToString(f2)dbdata.ToString(f2)是将 double 格式化为固定小数位数的字符串适合显示输出String.Format({0:N2})String.Format({0:N2}, 0.55555)是格式化数字并带千分位分隔符适合金额、统计数据的展示ToString(#0.00)s.ToString(#0.00)是自定义格式保留小数位适合需要控制显示格式的场景NumberFormatInfoprovider.NumberDecimalDigits intDecLength; strCashAmt.ToString(N, provider)是动态设置小数位数适合运行时需要灵活控制精度的场景保留指定小数位数并四舍五入的常用方法使用Math.Round方法对数值进行四舍五入保留指定小数位数。double value 0.55555; double roundedValue Math.Round(value, 2); // 保留两位小数结果为 0.56使用ToString(N)格式化数字并保留小数位数通过NumberFormatInfo配合ToString方法实现自定义格式化包括小数位数和千位分隔符。System.Globalization.NumberFormatInfo provider new System.Globalization.NumberFormatInfo(); provider.NumberDecimalDigits 2; // 设置小数位数为2 double strCashAmt Convert.ToDouble(this.txtCashAmt.Text); this.txtCashAmt.Text strCashAmt.ToString(N, provider); // 输出如1,234.56使用ToString(F)格式化固定小数位数四舍五入F格式符用于指定小数位数自动四舍五入。double dbdata 0.55555; string str1 dbdata.ToString(F2); // 结果0.56 string str2 dbdata.ToString(F3); // 结果0.556使用ToString(#0.00)实现自定义格式化通过格式字符串控制显示样式点后几位0即保留几位小数支持四舍五入。double s 0.55555; string result s.ToString(#0.00); // 结果0.56 string result2 s.ToString(#0.000); // 结果0.556使用String.Format进行格式化输出适用于字符串拼接或动态格式化需求。string result String.Format({0:F2}, 0.55555); // 结果0.56 string result2 String.Format({0:F3}, 0.55555); // 结果0.556 string result3 String.Format({0:N2}, 56789); // 结果56,789.00 string result4 String.Format({0:N3}, 56789); // 结果56,789.000百分比格式化保留小数位并正确显示百分号使用NumberFormatInfo设置百分比格式包括小数位数与符号位置。System.Globalization.NumberFormatInfo provider new System.Globalization.NumberFormatInfo(); provider.PercentDecimalDigits 2; // 小数点保留2位 provider.PercentPositivePattern 2; // 百分号在数字右侧如50.00% double result (double)1 / 3; string formattedPercent result.ToString(P, provider); // 输出33.33%自定义百分比显示逻辑带条件判断适用于需要根据数值范围决定显示内容的场景。public string GetRate(double hcount, double task) { string rValue; if (task 0) task 1; double db (hcount / task) * 100; if (hcount task) rValue 100%; else rValue db.ToString(#0.#0) %; // 保留一位小数如99.5% return rValue; }数值除法后保留特定小数位数不带千分位当需要将数值除以100后保留两位有效小数且不显示千分位。double value 56789; string result (value / 100.0).ToString(#.##); // 结果567.89 string result2 (value / 100).ToString(#.##); // 结果567整数部分总结不同场景下的推荐用法场景推荐方法简单四舍五入保留两位小数Math.Round(value, 2)显示金额并带千分位、小数ToString(N2)NumberFormatInfo固定小数位输出无千分位ToString(F2)自定义格式如 #0.00ToString(#0.00)百分比显示含符号位置控制ToString(P, provider)动态字符串格式化String.Format({0:F2}, value)以上方法可根据实际业务需求灵活组合使用。