Если вы хотите только открыть внешние ссылки (ссылки, которые идут на другие сайты), то этот бит JavaScript / jQuery работает хорошо:
$(function(){
var hostname = window.location.hostname.replace('www.', '');
$('a').each(function(){
var link_host = $(this).attr('hostname').replace('www.', '');
if (link_host !== hostname) {
$(this).attr('target', '_blank');
}
});
});
Если вы работаете с суммой валюты, я настоятельно рекомендую вместо этого использовать десятичный класс Python: http://docs.python.org/library/decimal.html
Возможно, это поможет вам:
a=315.15321531321
a=a*100
a=int(a)
a=a/100.0
print(a)
315.15
Объяснение: Если вы хотите округлить во втором десятичном разряде, вам необходимо: 1. умножить свой номер на 100; это дает вам 31515.321531321, 2. конвертирует это новое число в целое; int (31515.321531321) дает вам 31515, 3. разделите его на 100.0; 31515 / 100.0, 4. и вы получите правильный ответ; 315.15
Наслаждайтесь!
Форматирование строк в python 2.x должно сделать это для вас:
>>> print '%.2f' % 315.15321531321
315.15
Это ограничивает представление строки всего двумя десятичными знаками. Обратите внимание, что если вы используете round(315.153215, 2)
, вы получите другое значение float, которое естественно неточно (или переоценено, в зависимости от того, как вы его смотрите):
>>> round(315.15321531321, 2)
315.14999999999998
Технически round()
является правильным, но он не «усекает» результаты по вашему запросу в 315.15
. Кроме того, если вы округлите значение, подобное 315.157, оно будет создавать нечто более близкое к 315.16 ... не уверен, что это то, что вы подразумеваете под «усечением».
При работе с типами Decimal
и валютой, где сумма должна быть точной, вот что я придумал для усечения до центов (сотых):
amount = Decimal(long(amount * 100)) / Decimal(100)
Немного истории: Я попробовал quantize
, но он имеет тенденцию округлять, а не обрезать. И я не мог с чистой совестью использовать дорогие струнные формы для чего-то такого простого. И, наконец, мне не нужны какие-либо проблемы с точностью a la float
, поэтому я использую очень специфическое литье, которое, вероятно, будет излишним.
Похоже, печать «% .2f» также округляется. Вот код Python, который округляет и обрезает
num = 315.15627
print "rounded = %.2f" % num
print "truncated = %.2f" % (int(num*100)/float(100))
rounded = 315.16
truncated = 315.15
Если вы просто хотите уменьшить его, вы можете использовать флаг форматирования "%f"
:
value = 315.123123123
print "Value is: %.2f" % value
Если вы хотите действительно отрезать «дополнительные» цифры, сделайте что-то вроде:
from math import trunc
value = trunc(value*100)/100
Встроенная функция round()
:
>>> num = 315.1532153132
>>> round(num, 2)
3.1499999999999998
У вас есть несколько вариантов: вы можете округлить число, используя round (), однако это может привести к некоторым неточностям (например, 315.15 может округлить до 315.150000003). Если вы просто хотите усечь значение float при его отображении, вы можете указать ширину вывода с помощью printf («%. 2f», mynumber). Это, вероятно, лучшее решение, поскольку, не зная больше о вашем конкретном приложении, в целом рекомендуется сохранить всю длину номера для расчета.