Outlook игнорирует padding
и margin
, примененные к img
.
Решение состоит в том, чтобы применить padding
к td
, окружающему изображение.
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="600">
<tr>
<td style="padding: 10px;">
<img src="http://example.com/example.png" width="100" height="50" alt="" border="0">
</td>
</tr>
</table>
Удачи.
если это деление на 2, Самый быстрый способ сделать это - сдвиг бит.
5>>1 = 2
6>>1 = 3
и т. Д. И т. Д. Он просто сдвигает биты вправо на 1 бит, тем самым делит число на 2 и теряет остальные
1110 >> 1 = 111
1011 >> 1 = 101
1011 >> 2 = 10 //division by 4
1011 << 1 =10110
Просто приведите его к целому числу:
$result = (int)(6 / 2);
По какой-то причине, это намного быстрее, чем intval()
.
Редактировать: Я предполагаю , что вы ищете общее решение целочисленного деления. Сдвиг битов - это особый случай деления (или умножения) на степени 2. Если вас это интересует, то:
a / b^n = a >> n where a, b, n are integers
так:
a / 2 = a / 2^1 = a >> 1
Но два предостережения:
Многие компиляторы / интерпретаторы сделают это для вас автоматически, поэтому нет смысла угадывать это;
Если вы не делаете это деление в по крайней мере, 100 000 раз в одиночном исполнении скрипта не стоит Это бессмысленная микрооптимизация.
Для дальнейшего уточнения (2), да (int)
быстрее, чем parseInt()
, но имеет ли это значение? Почти наверняка нет. Сосредоточьтесь на удобочитаемом коде и хорошем алгоритме. Подобные вещи бесполезны.
Просто протестируйте его:
Результат (Win32, Core2 / E6600):
generic division (3000000)
(int)DIV: 1.74 sec
intval(DIV): 6.90 sec
floor(DIV): 6.92 sec
int_divide(): 1.85 sec
division by 2 (3000000)
(int)(VAL/2): 1.75 sec
VAL >> 2: 1.63 sec
(int)(VAL*0.5): 1.72 sec
Код:
...
echo "generic division ($N)\n";
$start = getTime(); for($i=1; $i<$N; $i++) { $c = (int)(($i+1) / $i); }
printf("(int)DIV:\t %.2f sec\n", getTime()-$start);
$start = getTime(); for($i=1; $i<$N; $i++) { $c = intval(($i+1) / $i); }
printf("intval(DIV):\t %.2f sec\n", getTime()-$start);
$start = getTime(); for($i=1; $i<$N; $i++) { $c = floor(($i+1) / $i); }
printf("floor(DIV):\t %.2f sec\n", getTime()-$start);
$start = getTime(); for($i=1; $i<$N; $i++) { $c = ($i - ($i % ($i+1))) / ($i+1); }
printf("int_divide():\t %.2f sec\n", getTime()-$start);
echo "division by 2 ($N)\n";
$start = getTime(); for($i=1; $i<$N; $i++) { $c = (int)(($i+1) / 2.0); }
printf("(int)(VAL/2):\t %.2f sec\n", getTime()-$start);
$start = getTime(); for($i=1; $i<$N; $i++) { $c = ($i+1) >> 2; }
printf("VAL >> 2:\t %.2f sec\n", getTime()-$start);
$start = getTime(); for($i=1; $i<$N; $i++) { $c = (int)(($i+1)*0.5); }
printf("(int)(VAL*0.5):\t %.2f sec\n", getTime()-$start);
...
С уважением
rbo
round () обычно используется в таких целях. Но я понятия не имею о его скорости. У меня никогда не было миллионов вычислений в моем коде. Всего несколько десятых макс.
используйте функции round (), ceil () или floor (), в противном случае объявляйте тип перед, как int ()
Работает, только если $ x и $ y являются целыми числами
function int_divide($x, $y) {
return ($x - ($x % $y)) / $y;
}