【发布时间】:2019-05-19 16:00:19
【问题描述】:
0我正在开发某种按钮(实际上它们是图像),当它们被禁用(而不是启用 = false)时,它们的不透明度值为 0.1。因此,通过对点击事件中的不透明度进行简单检查,我可以知道它是启用还是禁用。
但是,当我为不透明度 (0.1) 设置禁用值并调试并检查执行时,我有一个奇怪的行为:不透明度值不完全是 0.1,而是稍大一些。所以,当我检查 if ( btnLocateMeControl.Opacity == 0.1 ) 时总是返回 false,因为它不准确。
这里是调试时的截图:
知道为什么会发生吗?任何优雅的解决方案不是检查不透明度是否不在 0.09 - 0.11 之间?
谢谢!
【问题讨论】:
-
因为你在比较浮点数,这总是充满危险:stackoverflow.com/questions/3874627/…
-
为什么不直接实现
Enabled属性,您可以在其中更改设置器中的不透明度?然后你有一个不错的、可靠的bool来传递状态。 -
0.1 不能完全表示为浮点数
-
@Rufus L 从没想过这一点。我将尝试使用一个简单的函数来检查给定控件是否在安全值之间具有不透明度。谢谢!
-
@RufusL 你可以写一个答案,这样问题就可以结束了:-)