首页 > 解决方案 > C# 为什么 string.format 将浮点值舍入到最接近的第 10 位?

问题描述

格式化后的数字四舍五入到最接近的第 10 个值

var testVal = Convert.ToSingle("10963798");
var formattedVal = string.Format("{0:n0}", testVal);

产量: 10,963,800

我怎样才能避免这个回合?

标签: c#rounding

解决方案


ToSingle返回一个单精度float,它没有那种精度(通常只有 7 个十进制数字)。因此,Format假设最后一位数字不精确,并将其四舍五入为 0。

改为使用ToDouble,它返回一个double.

或者,因为您没有使用任何小数部分,所以只需使用ToInt32.


推荐阅读