Excelシートから値8.03をコピーし、以下のコードを使用してクリップボードからその値をC#で読み取っています。出力される値は8.0299999999999994であり、8.03ではありません。下のようにxmlを見ると、値は8.0299999999999994です。 xlsxのzipファイルにあるsheet1.xmlの値も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) –