JavaScript использует значения двойной точности с плавающей запятой, то есть полную точность 53 бит, но вам нужно
ceil(lb 714341252076979033) = 60
битов, чтобы точно представить это значение.
Ближайшая точно представимая число 714341252076979072
(записать исходный номер в двоичном формате, заменить последние 7 цифр на 0
и округлить, потому что наивысшая замещенная цифра была 1
).
Вы получите 714341252076979100
вместо этого числа, поскольку ToString()
, как описано ECMA-262, §9.8.1 работает с полномочиями в десять и по 53-битной точности, все эти числа равны.
Очень просто и без объяснения преимуществ использования Function
s, вы можете представить себе, что ваша функция является аналогом:
HashSet<String> anonymousMethod(String x) {
return doSomething(x);
}
... который находится анонимно в вашем функциональный объект.
Его можно заменить на анонимный класс:
Function<String, HashSet<String>> asSet = new Function<>() {
@Override
public HashSet<String> apply(String s) {
return new HashSet<>() {{
do_something(s);
}};
}
};
Вы просто реализуете метод apply
из Function
, который представляет собой функциональный интерфейс :
[117 ] Обратите внимание, что экземпляры функциональных интерфейсов можно создавать с помощью лямбда-выражений, ссылок на методы или ссылок на конструкторы.blockquote>