在 C# 中截断不进行舍入的双精度值
在 C# 中将双精度浮点数转换为字符串时,您可以遇到需要将其格式化为特定小数位数的情况。但是,使用 String.Format("{0:0.00}") 可能会导致舍入,这对于您想要精确截断的某些场景来说是不可取的。
要解决此问题,请结合使用 Math.Truncate () 和 NumberFormatInfo.CurrentInfo 实现不四舍五入的截断并保持文化敏感
解决方案:
double myDoubleValue = 50.947563; double x = Math.Truncate(myDoubleValue * 100) / 100;
此操作将值乘以 100,截断以删除小数位,然后除以100 恢复原始比例。
string s = x.ToString("N2", NumberFormatInfo.CurrentInfo);
此格式说明符使用“N”格式字符串,其中包括带有尾随百分号的货币格式。 NumberFormatInfo.CurrentInfo 确保格式遵循当前区域性设置。
结果:
使用上述方法,您将获得精确的 double 值的字符串表示形式两位小数,不进行任何四舍五入。例如,值 50.947563 将被截断为 50.94,而不向上舍入为 50.95。
以上是如何在 C# 中将双精度值截断而不是四舍五入到特定的小数位数?的详细内容。更多信息请关注PHP中文网其他相关文章!