gpt4 book ai didi

C# 使用 Convert.ChangeType() 的错误转换

转载 作者:行者123 更新时间:2023-11-30 13:21:20 25 4
gpt4 key购买 nike

我正在使用 Convert.ChangeType() 将 Object(我从 DataBase 获取)转换为通用类型 T。代码如下所示:

T element = (T)Convert.ChangeType(obj, typeof(T));
return element;

这在大多数情况下都很好用,但是我发现如果我尝试转换像返回以下 sql 查询一样简单的东西

select 3.2

上面的代码(T 是 double 的)不会返回 3.2,而是 3.2000000000000002。我不明白为什么会这样,或者如何解决它。请帮忙!

最佳答案

您看到的是 float 在内存中表示方式的产物。有相当多的信息可以说明这是为什么,但是 this paper是一个很好的。这种现象就是为什么您最终会出现看似异常的行为。 doublesingle 永远不应以未格式化的形式显示给用户,并且您应该避免像瘟疫这样的相等比较。

如果您需要更精确的数字(即表示货币值),请使用decimal

关于C# 使用 Convert.ChangeType() 的错误转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287917/

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