DataSet.GetXml() 中 bug 的解决方法

Workaround for bug in DataSet.GetXml()

提问人:Rushikesh Sane 提问时间:9/26/2023 更新时间:9/26/2023 访问量:18

问:

我正在使用 Net core 6.0 并使用 DataSet 和 GetXml() 函数将数据转换为字符串。但是,某些值正在正确处理。例如,值 56.45533 在通过 GetXml() 后将转换为 56.4553299999999996。

有谁知道我能做些什么来解决这个问题?此外,由于这显然看起来像GetXml()函数中的错误,因此向Microsoft报告问题的正确位置是什么?以下是我的代码 -

DataSet ds = new DataSet();
DataTable dt = new DataTable("Forecast");
dt.Columns.Add(new DataColumn("lat", typeof(double)));
DataRow dr1 = dt.NewRow();
DataRow dr2 = dt.NewRow();
DataRow dr3 = dt.NewRow();
DataRow dr4 = dt.NewRow();
DataRow dr5 = dt.NewRow();
dr1["lat"] = 56.45533;
dt.Rows.Add(dr1);
dr2["lat"] = 59.67768;
dt.Rows.Add(dr2);
dr3["lat"] = 534.64568;
dt.Rows.Add(dr3);
dr4["lat"] = 56.45533;
dt.Rows.Add(dr4);
dr5["lat"] = 534.47755;
dt.Rows.Add(dr5);
var temp = ds.GetXml();

调试时 temp 变量的值如屏幕截图所示。enter image description here

C# XML 分析 数据集 ado.net DataColumn

评论

1赞 Ralf 9/26/2023
在 Net 6 项目中执行时对我来说看起来是正确的。但是,如果您想更好地控制该值,请将 double 替换为 decimal。
0赞 Rushikesh Sane 10/2/2023
是的,十进制有效。谢谢。后来发现这是计算机科学中的经典问题。learn.microsoft.com/en-us/cpp/build/...... docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html stackoverflow.com/questions/10444350/......

答: 暂无答案