Моя проблема заключалась в том, что document.createElement
заменяли некоторые (глючные) инъецированные антифишинговые JS, о которых я не знал. Проблема с тем, что JS выходит за рамки этого вопроса, но советы по отладке, приведенные в комментариях к этому вопросу, были ценными для его отслеживания:
document.createElement
находился в тени, был обнаружен отмечая, что document.hasOwnProperty('createElement')
вернул true
. document.createElement
, которая запускает отладчик, помогло мне отследить нарушающий код. Для этой цели я использовал фрагмент break-on-access , но также см. Простой код в в этом комментарии выше для альтернативы «брось себе». Вызов языка сценариев с помощью функции ceil. Учитывая $NUMBER
:
python -c "from math import ceil; print ceil($NUMBER/500.0)"
или
perl -w -e "use POSIX; print ceil($NUMBER/500.0), qq{\n}"
Если Вы уже знакомы с библиотекой Python, то вместо того, чтобы учиться bc
, Вы могли бы хотеть определить эту функцию удара:
pc () { pyexpr="from math import *; print($@)"; python -c "$pyexpr"; }
Затем:
pc "ceil(3/4)"
1
, но также и любые допустимые работы выражения python :
pc pi / 4
0.7853981633974483
pc "'\n'.join(['Pythagoras said that %3.2f^2 + %3.2f^2 is always %3.2f'
% (sin(ai), cos(ai), sin(ai)**2 + cos(ai)**2)
for ai in [pi / 4 * k for k in range(8)]])"
Pythagoras said that 0.00^2 + 1.00^2 is always 1.00
Pythagoras said that 0.71^2 + 0.71^2 is always 1.00
Pythagoras said that 1.00^2 + 0.00^2 is always 1.00
Pythagoras said that 0.71^2 + -0.71^2 is always 1.00
Pythagoras said that 0.00^2 + -1.00^2 is always 1.00
Pythagoras said that -0.71^2 + -0.71^2 is always 1.00
Pythagoras said that -1.00^2 + -0.00^2 is always 1.00
Pythagoras said that -0.71^2 + 0.71^2 is always 1.00
Вот решение с использованием bc (который должен быть установлен практически везде):
ceiling_divide() {
ceiling_result=`echo "($1 + $2 - 1)/$2" | bc`
}
Вот еще чисто на bash:
# Call it with two numbers.
# It has no error checking.
# It places the result in a global since return() will sometimes truncate at 255.
# Short form from comments (thanks: Jonathan Leffler)
ceiling_divide() {
ceiling_result=$((($1+$2-1)/$2))
}
# Long drawn out form.
ceiling_divide() {
# Normal integer divide.
ceiling_result=$(($1/$2))
# If there is any remainder...
if [ $(($1%$2)) -gt 0 ]; then
# rount up to the next integer
ceiling_result=$((ceiling_result + 1))
fi
# debugging
# echo $ceiling_result
}
Вы можете использовать awk
#!/bin/bash
number="$1"
divisor="$2"
ceiling() {
awk -vnumber="$number" -vdiv="$divisor" '
function ceiling(x){return x%1 ? int(x)+1 : x}
BEGIN{ print ceiling(number/div) }'
}
ceiling
output
$ ./shell.sh 1.234 500
1
Или, если есть выбор, вы можете использовать лучшую оболочку, которая с плавающей точкой, например Zsh
integer ceiling_result
ceiling_divide() {
ceiling_result=$(($1/$2))
echo $((ceiling_result+1))
}
ceiling_divide 1.234 500