Вы можете предоставить функцию, включающую параметр для приемлемой разницы между двумя значениями. Например,
// close is good for horseshoes, hand grenades, nuclear weapons, and doubles
static bool CloseEnoughForMe(double value1, double value2, double acceptableDifference)
{
return Math.Abs(value1 - value2) <= acceptableDifference;
}
А затем назовите его
double value1 = 24.5;
double value2 = 24.4999;
bool equalValues = CloseEnoughForMe(value1, value2, 0.001);
Если вы хотите быть немного профессионалом в этом, вы можете вызвать функцию ApproximatelyEquals
или что-то в этом роде.
static bool ApproximatelyEquals(this double value1, double value2, double acceptableDifference)
«Что бы вы ни нашли для себя лучше всего», я думаю, это общий ответ на данный момент - YUI доступен дольше, так что, несомненно, он будет тем инструментом, который в настоящее время считается лучшим инструментом. В то время как Closure для нас в новинку, поэтому у нас нет такого богатого опыта работы с Closure, как с YUI. Следовательно, я не думаю, что вы найдете убедительные аргументы в пользу использования Closure, основанные на опыте людей, просто потому что это ново.
Это не значит, что вы не должны использовать Closure .... просто мой способ сказать, я не думаю, что на этот вопрос есть ответ, пока несколько человек не используют 2 и не сравнят их.
Изменить:
Есть несколько ранних сравнений, в которых говорится, что закрытие действительно дает улучшение:
http://blog.feedly.com/2009/11/06/google-closure-vs-yui-min/
http://news.ycombinator.com/item?id=924426
Дальнейшее редактирование: Стоит следить за списком проблем для закрытия: http://code.google.com/p/closure-compiler/issues/list
Замыкание можно использовать в Простой режим или Расширенный режим. Простой режим довольно безопасен для большей части кода JavaScript, поскольку он переименовывает только локальные переменные в функциях для дальнейшего сжатия.
Расширенный режим намного более агрессивен. Он будет переименовывать ключи в объектных литералах и встроенных вызовах функций, если сможет определить, что они возвращают простые значения без побочных эффектов.
Например:
function Foo()
{
return "hello";
}
alert(Foo());
преобразовано в:
alert("hello");
И этот код:
var o = {First: "Mike", Last: "Koss"};
alert(o);
является переведено на:
alert({a:"Mike",b:"Koss"});
Вы можете запретить расширенному режиму изменять значения ключей в объектных литералах, цитируя имена вроде этого:
{'First': "Mike", 'Last': "Koss"}
Вы можете опробовать эти и другие примеры на интерактивном сайте Google Closure Compiler .
I think it depends on your code. If you want to compile your own code, then I think it is worth it to patch the code so that it works with Closure Compiler (some things might seem a bit awkward at the start). I believe Closure Compiler soon will be the top choice for such jobs and it will also make you to tidy up your code a bit and maintain consistent style (of course it depends on your preferences, you might hate some parts, I do :P ).
If you depend on other libraries then in my opinion you should wait a bit until they release Closure Compiler compatible versions. It shouldn't take much time for most popular libraries out there. And maybe you can provide fixes for those "not-so-active" libraries which you use yourself.
I'm talking about Advanced Compilation mode here, the Simple Compilation mode as some has pointed out is fairly safe to use.
And here's a different opinion - Google Closure ? I'm Not Impressed. It's maybe a little bit too harsh, but nice read. I guess only time will tell which one is better =)
Из сравнений, которые я видел, Closure, кажется, явный победитель с точки зрения минимизации размера файла. В этой статье используются три популярные библиотеки JS (jQuery, Prototype, MooTools) для сравнения сжатия между YUI Compressor и Closure Compiler: http://www.bloggingdeveloper.com/post/Closure-Compiler-vs-YUI-Compressor-Comparing-the-Javascript-Compression-Tools.aspx
Замыкание выходит впереди в каждом тесте, особенно в его расширенный режим, в котором он «минимизирует размер кода примерно на 20-25% больше, чем YUI Compressor, обеспечивая сжатие почти на 60%»