Kotlin 科特林的数学规则

Kotlin 科特林的数学规则,kotlin,math,Kotlin,Math,我试图在一段时间内以直线的方式对一件物品的价值进行贬值 如果我使用itemValue2=itemvalue1-itemvalue1*item Age/item Life,它可以完美地工作,但当我最初 used itemValue2=itemvalue1*1-项目年龄/项目寿命,它不断评估为itemvalue1 为什么会这样?这是数字1的类型吗 itemValue1和itemValue2是双倍的,项目期限和项目寿命是长的 或者这是我不明白的数学规则?在kotlin中称为数学优先级的东西,意思是当你

我试图在一段时间内以直线的方式对一件物品的价值进行贬值

如果我使用itemValue2=itemvalue1-itemvalue1*item Age/item Life,它可以完美地工作,但当我最初

used itemValue2=itemvalue1*1-项目年龄/项目寿命,它不断评估为itemvalue1

为什么会这样?这是数字1的类型吗

itemValue1和itemValue2是双倍的,项目期限和项目寿命是长的


或者这是我不明白的数学规则?

在kotlin中称为数学优先级的东西,意思是当你创建像这样的1+2*3运算时,预期结果是9,但不是,7是结果,在kotlin中是乘法*和除法*的优先级,然后是加号+和减号-

要解决此问题,您需要在语言中的任何操作符号之前添加括号,它具有优先权


运算将为1+2*3,结果为9。

如注释中所述,除以的Long将导致截断的Long值。如果结果值小于1,则结果为截断值0。这使得itemValue1与1相乘,1本身就是。您必须强制转换为使用小数的数字类型,而不必像Double或Float那样截断。

由于商品年龄和商品寿命是整数,商品年龄/商品寿命的结果也是整数除法,并且假设商品年龄<商品寿命,结果将是0。我在解析代码时遇到问题。item Age真的是Kotlin语法吗?谢谢你指出了我还没有学会的一个基本原则。我会记住的!在某种程度上,优先权是个问题。如果我保留了十进制值,而不是将两个long作为单独的元素进行分割和截断,那么一切都会很好