我正在构建一个板球应用程序。我希望数字增加 0.1,但一旦达到 0.5 并且我再次点击加号,我希望它四舍五入到整个值。
例如。2.1, 2.2, 2.3, 2.4, 2.5 然后跳转到 3.0(然后重新开始 3.1, 3.2, 3.3 等)
我的步进器目前上下 0.1,但它包括小数(.6、.7、.8 和 .9)
每次它达到 0.5 个数字时,我都需要将其四舍五入。减法时一样。
这是我的代码:
var oversFloat: Float = 0.0
@IBOutlet weak var displayOversLabel: UILabel!
@IBAction func OversStepper(_ sender: UIStepper) {
let oversValue = Float(sender.value)
displayOversLabel.text = String(oversValue)
浮点数很麻烦。你真的不应该测试一个浮点数是否与另一个值相等。在您的情况下0.1
,不能用浮点数精确表示,因此增加会0.1
引入增加的误差。所以你的号码可能会在0.499999999
你期待的时候结束0.5
。
在您的情况下,您可以通过在步进器中使用整数来轻松避免此问题。将您的步进器修改为 step by1
而不是 by0.1
并将您的最小值和最大值乘以10
。然后,当您使用步进值更新标签时,将步进值除以10
。
要从递增88.5
到89.0
哪个递增,从递减89.0
到从哪个跳88.5
,请检查一个数字是否为6
或9
,然后通过以下方式递增/递减您的步进值4
:
@IBAction func oversStepper(_ sender: UIStepper) {
let value = Int(sender.value)
let remainder = value % 10
if remainder == 6 {
sender.value = Double(value + 4)
} else if remainder == 9 {
sender.value = Double(value - 4)
}
displayOversLabel.text = String(format: "%.1f", sender.value / 10)
}
通过使用整数值步进,不会引入错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句