所以我正在创建一个计算简单兴趣的应用程序。这是我的代码:
@IBOutlet var principle: UITextField!
@IBOutlet var rate: UITextField!
@IBOutlet var time: UITextField!
@IBOutlet var total: UILabel!
//@IBOutlet var textFields: [UITextField]!
@IBAction func buttonTapped(AnyObject) {
println("Calculate button tapped!")
var principleInt: Int = principle.text.toInt()!
var rateInt: Int = rate.text.toInt()! / 100
var timeInt: Int = time.text.toInt()!
var answer: Int = timeInt * rateInt * principleInt
println(answer)
var myString = String(answer)
total.text = myString
}
但是答案总是会返回0.这是为什么?我该如何解决?
答案 0 :(得分:3)
我愿意打赌你的问题在这里:
var rateInt: Int = rate.text.toInt()! / 100
我们假设您输入了5
的费率。因此,您获得字符串"5"
,将其转换为int 5
,除以100
并获取0
。然后将其乘以任意两个其他数字,结果为0
。
为什么呢?好吧,整数的整数点是它们是没有小数值的数字。*有关详细信息,请参阅Wikipedia,但这应该足以理解5/100
是小数值,并且如果强制使用Swift把它放到一个整数中,你可能得到的最好的是0
(或1
)。**
如果您想要处理不是100%的倍数的费率,您可能希望将rateInt
设置为整数而不除以100,然后设置另一个变量,如rateFraction
到double
,值rateInt / 100.0
,然后将其与其他两个值相乘,然后(如果需要)舍入并在结尾处转换回整数。 / p>
*可能更准确地说整数的全部意义在于它们是自然界对负数的延伸。你可以把它放在加法逆,前导,闭减或其他方面。但对于那些甚至不知道整数是什么的人来说,"数字没有小数值"可能更清楚。
**有不同的规则可以理解:向0舍入,向负无穷大舍入,舍入到最接近的整数,用1/2
的几个不同的特殊规则之一。但这在这里几乎不重要;分数5/100
介于0
和1
之间,因此如果您尝试将其强制为整数,它将会舍入到这两个数中的一个。事实上它恰好是Swift中的0
,几乎所有其他编程语言都不重要。