gpt4 book ai didi

c# - Excel 2007 中的数值 - 基础 xml 文件中的表示与存储

转载 作者:行者123 更新时间:2023-12-04 20:15:13 26 4
gpt4 key购买 nike

这个问题与 .NET 和 OpenXml 有关。

我已经阅读了以下文章,它有很好的解释,但没有回答我的问题:
Inconsistent visualization of numerical values in Excel 2007 vs the underlying xml file

在我的应用程序中,用户正在上传 Excel (.xls/.xlsx),我正在使用 OpenXML SDK 进行解析。

解析工作正常,除了一些值。 Excel 存储的值与在某些情况下输入的值不同。以下是用户输入的内容与底层 xml 中存储的内容的一些示例:

+--------------------+------------+---- ----------------+
|用户输入值 | Excel 显示值 |存储的 XML 值 |
+--------------------+------------+---- ----------------+
| 4.1 | 4.1 | 4.0999999999999996 |
+--------------------+------------+---- ----------------+
| 4.4 | 4.4 | 4.4000000000000004 |
+--------------------+------------+---- ----------------+
| 19.99 | 19.99 | 19.989999999999998 |
+--------------------+------------+---- ----------------+

当我使用 OpenXML 在 .NET 中解析这个 excel 时,我的问题就出现了。 OpenXML 读取这些值作为存储为 XML 值的内容。因此,即使用户输入了 4.1,OpenXML 仍将其读取为 4.0999999999999996。现在根据我在这个 excel 上运行的验证之一,我需要检查小数点。在这种情况下,我无法真正验证用户输入的内容。

任何帮助是极大的赞赏 !!由于 OpenXml 是 Microsoft 提供的 SDK,我没有尝试过任何其他 Excel 阅读器,但欢迎任何建议。

最佳答案

这是表示浮点类型数据的正确方法。您可以通过以下代码片段来验证这一点。

运行以下代码,

string s = "4.0999999999999996";

Console.WriteLine(float.Parse(s));
// output 4.1

string s1 = "4.4000000000000004";

Console.WriteLine(float.Parse(s1));
// output 4.4

string s2 = "19.989999999999998";

Console.WriteLine(float.Parse(s2));
// output 19.99

所以尝试 parse这些值,您将按原样获得预期的真实值。

关于c# - Excel 2007 中的数值 - 基础 xml 文件中的表示与存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com