我遇到的问题最终是一个错误。我正在使用Android Studio上的Groovy编写Android应用程序。它给出了与以下代码相关的奇怪的编译错误:
def foo(float s) {
s = s / 2 // compilation error with pointer at '/' position
s = s.toFloat() / 254 // no error
}
即使函数中的第一行与最后一行交换,也会发生编译错误。
我还在命令行上的Android Studio外部的本地Groovy 1.8.6环境中尝试了代码。它没有任何错误。
谁能解释我这种不正常的行为?这是正常的吗?是否有更聪明的方法来规避这个?我应该向Groovy发送错误票吗?
我正在使用Android Studio 2.1.2和Oracle JVM 1.8.0_92以及以下gradle依赖项:
classpath 'com.android.tools.build:gradle:1.5.0'
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.10'
compile 'org.codehaus.groovy:groovy:2.4.6:grooid'
修改:以下是Android Studio的编译错误:
/path/to/androidproject/Bar.groovy: 199: [Static type checking] - Possible loss of precision from double to float
@ line 199, column 19.
s = s / 2
^
编辑2 :以下代码甚至可以在Android上编译:
def foo(float s) {
s = s * 2
}
答案 0 :(得分:2)
尝试:
s = s / 2.0f
或
s = (float) (s / 2)