![](/img/trans.png)
[英]Double comparison precision loss in C#, accuracy loss happening when adding subtracting doubles
[英]data accuracy loss adding values to excel cell c#
早上,我在使用Excel單元格時遇到精度問題。
在下面的代碼中,我創建了一個包含所有類組件的數組,以使添加數據更加容易。 它們都是字符串,我檢查了在添加到excel單元之前,數據是否正確。
string[] row = { bill.BillNumber, "\t", bill.ContractNumber, (more data...)};
for (int j = 1; j <= row.Length; j++)
{
if (j - 1 == 0)
{
float bin = 0;
float.TryParse(row[j - 1], out bin);
workSheet.Cells[z, j] = bin;
}
else
{
workSheet.Cells[z, j] = row[j - 1];
}
}
一開始我沒有if,我正在將string添加到string中。 結果是:
workSheet.Cells[z, j].value 2.01404290302382E+16 dynamic {double}
bill.BillNumber "20140429030238239" string
當我在excel中更改單元格格式時,數字變為近似值。 如果我在字符串之前解析,則會發生這種情況:
bin 2.01404288E+16 float
workSheet.Cells[z, j].value 20140428795838464.0 dynamic {double}
bill.BillNumber "20140429030238239" string
當我執行相同的操作但格式較長時,會得到非常近似的結果,但不是精確的結果:
bin 20140429030238239 long
workSheet.Cells[z, j].value 20140429030238240.0 dynamic {double}
bill.BillNumber "20140429030238239" string
這是我的第一個選擇,但是因為我沒有得到正確的結果,所以我嘗試了另外兩個。 我沒有更多的想法,為什么我會失去准確性?
提前致謝。
問候。
PS:我沒有說woorksheet是Excel.Worksheet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.