两位小数浮点数在单元格中更改为多位小数

Two decimal float changing to many decimals in cell

我在 NameValueCollection 中有一个值为 .22 的值。该值被加载到一个浮点数 fValue.

debug时值为fValue=0.22,写入Excel时为fValue=0.22。

InvoiceWs.Cells["I" + iRow.ToString()].Style.Numberformat.Format = "$#,##0.00";
fValue = float.Parse(nvcUnitPrice["LG3000"].ToString());
InvoiceWs.Cells["I" + iRow.ToString()].Value = fValue;

当我打开 Excel 文件时,我看到该值为 0.219999998807907,我无法弄清楚发生了什么。有什么想法吗?

Floating-point 数字只有一定的精度。可以表示的最接近 0.22 的数字是您在 table 中看到的数字。你最好的选择是使用不同的类型,例如 decimal 用于 fValue,它不会受到这种 impecision 的影响。

编辑:如果你输入0.22 here,你就明白我的意思了。

由于您使用的是价格,因此您应该使用小数类型。来自 msdn https://msdn.microsoft.com/en-us/library/364x0z75.aspx。很高兴为您提供帮助