为什么C#中的(float)1.11111111=1.11111116?

为什么C#中的(float)1.11111111=1.11111116?,c#,floating-point,C#,Floating Point,为什么C#中的(float)1.11111111=1.11111116?只是实际数字的近似值;equality和其他操作符并不总是像您期望的那样工作,尽管它们工作得非常好 强制性链接: 这可以用来帮助缓解浮点值的非常小的分数问题,尽管我从未使用过它。我承认我对浮点数的经验是有限的 如果您需要更高的精度,请使用15-16位精度。如果您需要更高的精度,特别是对以10为基数的数字(例如用于货币计算),请使用十进制,因为浮点值不是一个精确的值:这很好地解释了它。还要确保你在6:00到10:00之间观看。

为什么C#中的
(float)1.11111111=1.11111116

只是实际数字的近似值;equality和其他操作符并不总是像您期望的那样工作,尽管它们工作得非常好

强制性链接:

这可以用来帮助缓解浮点值的非常小的分数问题,尽管我从未使用过它。我承认我对浮点数的经验是有限的


如果您需要更高的精度,请使用15-16位精度。如果您需要更高的精度,特别是对以10为基数的数字(例如用于货币计算),请使用
十进制

,因为浮点值不是一个精确的值:这很好地解释了它。还要确保你在6:00到10:00之间观看。简而言之:使用/表示连续值,使用/等表示离散值。

欢迎使用浮点奇点:)如果您不想因为不需要它而与之斗争,请使用固定精度类型,既不使用浮点型,也不使用双精度型。可能会有帮助。为了了解什么样的数据类型最适合您,我们需要知道您试图用它来表示什么。如果你更新了你的问题,我相信有人会提出建议。这能回答你的问题吗?你有那个视频的链接吗?谢谢大家的回答。在理解这个问题时,我发现这些链接非常有用:在结论中,当我想用有理数做算术时,我将使用十进制。最好的精度是十进制,精度为28位:)@Marcel1997是的,我需要纠正这一点,
十进制
不是整数,它实际上是十进制浮点数,而不是二进制浮点数。