Я написал задачу в gradle, которая увеличивает номер версии моего проекта при создании jar-файла.
Я использую простой десятичный номер версии с 3 десятичными знаками, например: version '2.001'
.
Код работает путем разбора строкового значения до двойного, увеличения на 0,001 и замены строки.При увеличении с ненулевого конечного значения код работает нормально.например, 2.001
правильно увеличено до 2.002
.Но когда я пытаюсь проанализировать нулевое окончание, например 2.010
, я получаю странную ошибку.Когда значение 2.010
анализируется как double на Double.parseDouble
, значение читается как 2.010999999999999997
.
Полный код приведен ниже:
task increaseVersionCode {
double versionCode = Double.parseDouble(version.toString())
println versionCode
versionCode += 0.001
println versionCode
println "version '$version'"
println "version '" + versionCode + "'"
String newBuildFile = buildFile.getText().replaceFirst("version '$version'","version '" + versionCode + "'")
buildFile.setText(newBuildFile)
}
Результат println
при версии version '2.010'
ниже:
2.0109999999999997
2.0119999999999996
version '2.0109999999999997'
version '2.0119999999999996'
Есть идеи, почемуэто происходит?