两个十进制浮点数在单元格中变成许多小数

我有一个NameValueCollection值为.22。 该值被加载到一个float fValue

写入Excel时,debugging时的值为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,我无法弄清楚发生了什么事情。 有任何想法吗?

在这里输入图像说明

既然你正在处理价格,你应该使用十进制types。 从msdn https://msdn.microsoft.com/en-us/library/364x0z75.aspx 。 很高兴帮助你

浮点数只有一定的精度。 可以表示的最接近0.22的数字就是你在表格中看到的数字。 你最好打赌是使用不同的types,如fValue decimal ,不受这种impecision。

编辑:如果你在这里input0.22 ,你可以看到我的意思。