两位小数浮点数在单元格中更改为多位小数
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。很高兴为您提供帮助
我在 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。很高兴为您提供帮助