Я копирую значение 8.03 с листа excel и считывая это значение в C# из буфера обмена, используя следующий код. Значение, которое выходит, составляет 8.0299999999999994, а не 8.03. Когда я смотрю на xml, как ниже, значение равно 8.0299999999999994. Файл sheet1.xml, который находится в zip-файле xlsx, также имеет значение 8.02999999999999994. Но когда я копирую значение в блокнот, значение копируется в 8.03. Что я могу сделать, чтобы скопировать значение как 8.03, как в блокноте?Чтение скопированного десятичного значения из excel
DataObject retrievedData = Clipboard.GetDataObject() as DataObject;
if (retrievedData.GetDataPresent("XML Spreadsheet"))
{
var sourceDataReader = new XmlTextReader(retrievedData.GetData("XML Spreadsheet") as System.IO.Stream);
var doc = XDocument.Load(reader);
var excelWorksheeet = doc.Element("Worksheet");
XNamespace ns = "urn:schemas-microsoft-com:office:spreadsheet";
XName worksheetName = ns + "Worksheet";
var worksheetElement = doc.Root.Element(worksheetName);
}
worksheetElement имеет значение:
<Worksheet ss:Name="Sheet1" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns="urn:schemas-microsoft-com:office:spreadsheet">
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" ss:DefaultRowHeight="15">
<Row>
<Cell>
<Data ss:Type="Number">8.0299999999999994</Data>
</Cell>
</Row>
</Table>
</Worksheet>
[Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –