Итак, dc - отличный инструмент для преобразования баз, удобный для этих заданий кодирования бит. например, чтобы преобразовать 1078 в двоичном я могу это сделать:Как преобразовать дробные десятичные числа в дробные двоичные числа, используя dc
bash> echo "2o1078p" | dc
10000110110
Однако я не могу заставить его печатать фракции между 0 и 1 правильно. Попытка преобразовать 0.3 в двоичном:
bash> echo "2o10k 0.3p" | dc
.0100
Но 0,0100 (бен) = 0,25 не 0,3.
Однако если я построить значение вручную я получить правильный ответ
bash> echo "2o10k 3 10/p" | dc
.0100110011001100110011001100110011
Ну это выглядит, как его дает мне больше, чем 10 значащих цифр я прошу, но тот ОК
Я делаю что-то неправильно? Или я пытаюсь сделать dc сделать что-то, что его не в состоянии сделать?
bash> dc --version
dc (GNU bc 1.06) 1.3
...
Быстрый взгляд на источник показывает, что нет ни одного Radix испытания в составе 1.06 и что он пытается выполнить определение POSIX dc, которое, вероятно, является пессимистичным. Учитывая, что неправильный 1t получает '3/10', я бы не стал ему доверять вообще для этих вычислений. – msw
Вместо того, чтобы отражать выражение в трубе, предпочтительным способом является просто использовать параметр выражения dc, например. 'dc -e" 2o10k 3 10/p "' – FloHimself