我有一个变量,它是Int
(loan
(。我想每次点击一个按钮都增加10%。
我尝试了各种方法,首先:
loan = 50
loan = loan + loan / 100 * 10
当我打印loan
时,它仍然显示50,没有添加10%。
接下来,我尝试声明一个新的Int
变量(percent
(来计算百分比:
loan = 50
var percent = loan / 100 * 10
loan = loan + percent
同样,loan
打印50,percent
打印0。
在每种情况下,我都尝试过将数学放入括号中,但结果相同。我确信这一定是一个非常简单的解决方案,但我无法解决,而且在谷歌上搜索也没有运气。
您的问题是loan
被声明为Int
。Int
s不可能有分数分量,所以当你试图用50除以100时,答案0.5的分数分量被去掉,变成0。乘以10,它仍然是零,所以当你把它添加到loan
时,它不会改变结果。
可以通过将loan
声明为Double
而不是Int
来解决此问题。你也可以用1.1乘以10%。
var loan: Double = 50
loan *= 1.1
我想在每次单击按钮时添加10%。
您可以将原始值的10%或十分之一相加,也可以乘以1.1:
var loan = 50.0 // including the decimal point makes it a float
其中任何一个都可以:
loan = loan + loan * 0.1
loan = loan * 1.1
loan += loan * 0.1
loan *= 1.1
同样,"贷款"打印50,"百分比"打印0。
这是因为loan
被声明为整数类型,而计算中的其他值也是整数,因此编译器推断percent
也应该是整数。您可以通过显式地将loan
或percent
的类型设置为Float
或Double
来修复此问题,如下所示:
var percent : Float = loan / 10
或者,您可以隐式地执行此操作,就像我在顶部所做的那样,将loan
设置为50.0
而不是50
。编译器将理解50.0
是Float
,因此它将推断loan
是Float
,这将导致用loan
进行的计算是该类型的,并且percent
也将是Float
。
首先,贷款应该是双倍的(因为int不能有分数(
然后你可以做这样的事情:
loan = 50
loan *= 1.1