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

时间:2016-01-21 20:17:07

标签: c# excel floating-point epplus namevaluecollection

我在NameValueCollection中有一个值为.22的值。该值将加载到float fValue

当它写入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,我无法弄清楚发生了什么。有什么想法吗?

enter image description here

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

浮点数只有一定的精度。可以表示的最接近0.22的数字就是您在表格中看到的数字。您最好的选择是使用decimal之类的其他类型,而fValue不会受到此类限制。

修改:如果您输入0.22 here,就会明白我的意思。