【发布时间】:2016-02-18 23:12:11
【问题描述】:
我认为这会相当简单,但我似乎无法解决或找到涵盖我情况的现有问题。
最初我设置了一些变量如下:
var score :Int! = 0
var totalquestionsasked :Int! = 0
var percentagecorrect :Int! = 0
这让我所有的值都计算得很好,但我遇到了百分比问题。
我的百分比基本公式是:
percentagecorrect = score / totalquestionsasked * 100
但是,当使用文本标签中的值时,我无法显示它。
所以经过一些研究,我将变量改为:
var score :Double = 0.0
var totalquestionsasked :Double = 0.0
var percentagecorrect :Double = 0.0
并且仍然使用相同的百分比公式:
percentagecorrect = score / totalquestionsasked * 100
但是,虽然这显示正常,但我不想要所有小数位。因此,经过更多研究后,我在另一个问题中发现了一个扩展,并将其改编为我的应用程序。我的扩展是:
extension Double {
var roundTo0f: Double {return Double(round(1*self)/1) }
var roundTo1f: Double {return Double(round(10*self)/10) }
var roundTo2f: Double {return Double(round(100*self)/100) }
var roundTo3f: Double {return Double(round(1000*self)/1000) }
}
我已经尝试使用如下扩展:
percentagecorrect = score / totalquestionsasked * 100
let percentagevalue: Double = percentagecorrect.roundTo0f
labelPercent.text = "\(percentagevalue)"
最终结果是这非常接近我想要的。但是,它仍然显示百分比到小数点后 1 位。 (顺便说一句,它不准确 - 我的意思是,如果分数为 1 并且提出的问题数为 3,则上面的代码将百分比显示为 33.0 而不是 33.3,但我离题了)
我真正想要的是在显示值之前将值向上或向下舍入到最接近的整数。也就是说,我想要的是
- 如果值为 33.3,则向下舍入为 33 并显示为 33
- 如果值为 66.6,则向上舍入为 67 并显示为 67
也就是说,我希望显示的结果中没有小数位。目前,它正确向上/向下舍入,但最后仍显示“.0”。如果这不可能,那么我希望它正确显示到小数点后一位。
我是编程新手,Swift 是我尝试学习的第一门语言,所以也许这只是一个新手错误,但我真的找不到我做错了什么。
如何让它工作?
【问题讨论】:
标签: swift