В java, какой диапазон целых чисел, которые плавают, может представлять собой превосходно? [Дубликат]

Вот пример, который делает то, что вы хотите. Я упростил ваш код, поэтому вам не нужно вручную идентифицировать каждую запись и предварительный просмотр.

http://jsfiddle.net/jqmPc/1/

Это немного сложно. Дайте мне знать, если у вас есть вопросы.

В основном, когда размер окна изменяется, скрипт проходит и находит первый просмотр в каждой строке, находя предварительный просмотр с тем же самым левым смещением, что и самый первый. Затем он добавляет класс last в запись до (предыдущая строка) и класс first для этого предварительного просмотра. Я делаю css clear: left на обоих из них, чтобы все обертывалось нормально, когда записи открываются.

Я сделал ваш код общим, без идентификаторов:

Some preview text

×

Some content text.

Это не делает вас придется писать один и тот же код снова и снова.

Скрипт open / close:

 $('.trigger').click(function() {
    $('.openEntry').slideUp(800); // Close the open entry
    var preview = $(this).closest('.preview');  // Grab the parent of the link

    // Now, clone the entry and stick it after the "last" item on this row:
    preview.next('.entry').clone().addClass('openEntry').insertAfter(preview.nextAll('.last:first')).slideDown(800);
});

// Use "on()" here, because the "openEntry" is dynamically added 
// (and it's good practice anyway)
$('body').on('click', '.close', function() {
    // Close and remove the cloned entry
    $('.openEntry').slideUp(800).remove();
});

Это может быть упрощено немного, я уверен, особенно если вы были готовы переформатируйте html немного больше, вставив запись внутри элемента предварительного просмотра (но все же скрытый). Вот немного более простая версия, с измененным html:

http://jsfiddle.net/jqmPc/2/

(Я также окрашиваю первый и последний элемент на линии, чтобы вы могли видеть, что происходит)

122
задан Pascal Cuoq 27 December 2016 в 00:38
поделиться

2 ответа

бит 2mantissa + 1 + 1

+1 в экспоненте (бит мантиссы + 1) состоит в том, что если мантисса содержит abcdef..., то число, которое оно представляет, фактически 1.abcdef... × 2^e, обеспечивая дополнительный неявный бит точности.

Для float это 16 777 217 (224 + 1). Для double это 9 007 199 254 740 993 (253 + 1).

>>> 9007199254740993.0
9007199254740992
151
ответ дан kennytm 15 August 2018 в 21:58
поделиться
  • 1
    Фантастично, спасибо большое. Работает так, как ожидалось, на моей машине - я знал, что делаю что-то немое с математикой! – Floomi 25 September 2010 в 15:24
  • 2
    Я объявил float и установил его равным 16 777 217. Но когда я напечатал его с помощью cout, это привело к 16 777 216. Я использую C++. Почему я не могу получить 16 777 217? – sodiumnitrate 14 October 2014 в 19:56
  • 3
    @sodiumnitrate Проверьте заголовок вопроса. 16777217 - это первое целое число , неспособное быть представленным точно. – kennytm 15 October 2014 в 09:05
  • 4
    Следующее целое число действительно 16777218, потому что 2 теперь становится последней значащей двоичной цифрой. – kennytm 16 October 2014 в 08:53
  • 5
    В C ++ это (1 << std::numeric_limits<float>::digits) + 1, а в C, (1 << FLT_MANT_DIG) + 1. Первое хорошо, потому что оно может быть частью шаблона. Не добавляйте +1, если вы просто хотите наибольшее представимое целое число. – Henry Schreiner 21 September 2017 в 19:00

Наибольшее значение, представляемое n-битным целым числом, равно 2n-1. Как отмечено выше, float имеет 24 бита точности в значении, которое, как представляется, означает, что 224 не подходит. Однако . Силы 2 в пределах показателя экспоненты точно представлены как 1,0 & times; 2n, поэтому 224 может соответствовать, и, следовательно, первое непредставимое целое число для float равно 224 + 1. Как указано выше. Опять же.

28
ответ дан thus spake a.k. 15 August 2018 в 21:58
поделиться
  • 1
    Это ясно объясняет «дополнительный неявный бит точности». часть другой. Благодарю. – chappjc 24 August 2015 в 18:03
Другие вопросы по тегам:

Похожие вопросы: