awk Arithmetic отличается от expr

Я нашел грязное, но работающее решение

    <HTML><HEAD>
</HEAD>
<script type="text/javascript">
var searchURL = "%U";
var newSearchURL = searchURL.replace("http://","");
var newSearchURL = newSearchURL.replace("/","");
var redirectTo = "http://www.google.com/search?hl=en&q="
window.location = redirectTo + newSearchURL
</script>

Вставьте его (сделайте резервную копию старого файла) / usr / share / squid / errors / YOURLOCALE / ERR_DNS_FAIL

1
16.08.2018, 22:59
1 ответ

Предположительно, ваш awkработает со значениями с плавающей запятой, как это делает GNU awk:

$ gawk 'BEGIN{ a = 11111111111111111111; print a, a/22; }'
11111111111111110656 505050505050505024

Он не может точно сохранить 11111111111111111111и не может точно сохранить остаток(11111111111111111111 / 22равно505050505050505029.81...).

Похоже, ваш exprимеет более широкий числовой диапазон. Мой не (из GNU coreutils 8.26):

$ expr 11111111111111111111 / 22
expr: 11111111111111111111: Numerical result out of range

Как комментирует @steeldriver , текущие версии GNU awk также имеют возможность использовать библиотеку GNU MPFR для высокоточных -арифметических операций. Например, четверных -точных поплавков достаточно, чтобы дать точный ответ для этого деления :

.
$ gawk -M -v PREC="quad" -v OFMT="%.6f" \
  'BEGIN{ a = 11111111111111111111; print a, a/22; }'
11111111111111111111 505050505050505050.500000

Другое то, bcили Python можно использовать для сколь угодно больших чисел.

6
27.01.2020, 23:15

Теги

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