В моем проекте grails я перевожу все вычисления в классы java.
Вот ссылка на исходный код (я сохранил его в Документах Google).
Основная цель - отформатировать текущее время в строку (на двух языках).Примеры:
1 day 2 hours 3 seconds
1 день 2 часа 3 секунды
Но у меня есть один метод:
private static boolean endsWith(final long num, final long part) {
if (num / 10 < 1) {
return num == part;
} else {
float val1 = (num - part) / 10;
float val2 = (float) Math.floor(val1);
return val1 == val2;
}
}
Он проверяет, заканчивается ли 'num' на 'part'.Примеры:
assert endsWith(128, 1) == false
assert endsWith(1, 1) == true
assert endsWith(34, 4) == true
PS num - стандартное значение long (java.lang.Long), а part - больше 0 и меньше или равно 9 (1..9).
Но этот код отлично работает только в классных классах.
В java классах я получил такие результаты:
endsWith(7, 7) == true
endsWith(23, 3) == false
endsWith(23, 1) == true
Как я могу видеть из gant log - весь код компилируется groovyc .
PS2 Я скомпилирую этот код с помощью groovyc и javac для сравнения результатов.Потому что, если я не ошибаюсь, это может быть ошибка в groovyc .Но это моя ошибка, я надеюсь:)